2014-12-22 43 views
0

我有一个脚本,我可以在命令行中运行以获取我的软件版本。它在命令行中完美工作。我在getversion "<full path>"中输入这个数字,它正是我所需要的。如何判断批处理脚本是否存在其他脚本?

现在的问题是我必须在我用于命令行的目录中都有getversion.bat和一个vbscript文件。这可能是一个愚蠢的问题,但如果我想将其添加到批处理脚本中,版本设置为变量,我该怎么做?

现在我有它看起来像这样

@echo off 
set version=getversion "<full path>" 
echo %version% 
pause>nul 

的问题似乎是,该批处理文件不知道在哪里可以找到getversion.bat或在脚本中引用的VBScript中。我怎样才能告诉批处理文件他们在哪里?

+0

使用'为/ f'启动另一个脚本或程序并将其输出捕获到一个变量。 'for/f“delims =”%% I in('getversion“full path'')do set”version = %% I“' – rojo

+0

如何解决这个事实,即我从文件夹中运行所有这些一台服务器?我不断收到这条消息'不支持UNC路径。 – David

+0

'pushd \\ servername \ path \ to \ file \',然后是'local \ path \ to \ getversion filename.ext'',完成后弹出。 – rojo

回答

0

完成此操作的一种方法是将函数的输出指向文件,然后使用SET /P命令将该输出读回本地变量。这应做到:

SET TempFile="%Temp%\%RANDOM%.txt" 

REM Direct output to a temp file. 
CALL getversion "<full path>">%TempFile% 

REM Read the output written to the temp file into a local variable. 
SET /P Version=<%TempFile% 

ECHO %Version% 

REM Cleanup. 
IF EXIST %TempFile% DEL %TempFile% 

或者(和这样多的“清洁剂”),可以使用FOR命令来运行你的功能和输出存入一个局部变量:

FOR /F "usebackq tokens=* delims=" %%A IN (`CALL getversion "<full path>"`) DO SET Version=%%A 
ECHO %Version% 
+0

我该如何解决这个事实:我正在服务器上运行所有这些文件夹?我一直得到这个消息'不支持UNC路径。' – David

+0

@David - 什么行给你这个错误? –

+0

在cmd.exe中弹出的第一件事。我必须从外部服务器运行这些脚本。所以我得到'CMD.EXE是以上述路径作为当前目录启动的。 UNC路径不受支持。默认为Windows目录“,因此getversion.bat无法识别 – David