2014-12-22 78 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