我想寫一個簡單的批處理腳本,調用某個exe,但如果找不到這個腳本,它應該調用另一個exe。Windows批處理:對命令未找到的反應
所以在僞
set file=c:\path\tool.exe
if(fileexists(file))
{
call file
}
else
{
call c:\somethingelse.exe
}
的感謝!
我想寫一個簡單的批處理腳本,調用某個exe,但如果找不到這個腳本,它應該調用另一個exe。Windows批處理:對命令未找到的反應
所以在僞
set file=c:\path\tool.exe
if(fileexists(file))
{
call file
}
else
{
call c:\somethingelse.exe
}
的感謝!
您可以使用ERRORLEVEL來檢查呼叫是否成功執行。
call file.exe
IF ERRORLEVEL 1 other.exe
這將適用於路徑中的可執行文件,但您不知道確切位置。它會打印一條錯誤消息。
也許像這樣的東西可能工作?
set FILE=whatever.exe
IF EXIST %FILE% GOTO okay
:notokay
echo NOT FOUND
GOTO end
:okay
echo FOUND
%FILE%
:end
密切類似於僞代碼張貼在原題:
set FILE1=c:\path\tool.exe
set FILE2=c:\path\to\other\tool.exe
if exist "%FILE1%" (
%FILE1%
) else (
%FILE2%
)
至於喬伊指出,這其實是打開的形式:
%FILE1% || %FILE2%
,但我不同意。前者運行FILE2
當文件無法執行(主要是因爲未找到或訪問被禁止)時,它還會打印一條額外的錯誤消息。爲了抑制這個信息的使用:
(%FILE1% || %FILE2%) 2>nul
例如
> (echo a || echo b)
a
> (echoa || echo b) 2>nul
b
要禁止所有的輸出,只是安排一下,任何兩個文件的運行:
(%FILE1% || %FILE2%) 1>&2 2>nul
或:
((%FILE1% || %FILE2%) 1>&2 2>nul) || echo both have failed
如:
> ((echo a || echo b) 2>nul) || echo both have failed
a
> ((echoa || echo b) 2>nul) || echo both have failed
b
> ((echoa || echob) 2>nul) || echo both have failed
both have failed
請注意,您也可以縮短這個時間:'file.exe || other.exe「(你並不需要''call' – Joey 2010-06-02 23:51:27
這個問題,如果file.exe存在,但由於某種原因失敗,它也會執行other.exe。我們只想執行other.exe如果file.exe由於它不存在而失敗。 – 2011-08-16 23:20:43