我在批處理文件errorlevel返回問題掙扎,並找不到答案。
任何人都可以給我任何提示嗎?批處理文件調用errorlevel兩次
我有一個外部二進制文件external.exe,它讀取批處理文件的返回碼(0-成功,其他失敗)以決定要做什麼。
在批處理文件mybatch.cmd中,我想運行腳本(perl)並將結果返回到批處理文件。
例如,mybatch.cmd:
@echo off
myperl.pl
exit %errorlevel%
雖然myperl.pl是:
#!perl.exe
exit 0;
,所以我想myperl.pl至0值返回到批處理文件,然後批處理文件將返回0到external.exe文件。
但external.exe沒有按預期工作。
1)如果我從CLI mybatch.cmd運行,然後在 「回聲%ERRORLEVEL%」 從CLI,我可以看到它是0。
2)如果我增加一行,以顯示從myperl.pl返回代碼,我可以看到從myperl.pl返回代碼正好是0
例如:
@echo off
myperl.pl
echo %errorlevel%
REM exit %errorlevel%
它會顯示0,所以Perl腳本恰好返回值。
3)如果我添加一行返回代碼手動設置爲0時,EXTERNAL.EXE工作正常。
@echo off
myperl.pl
result=0
exit %result%
這真的很奇怪。有任何想法嗎?我無法控制external.exe,所以我無法對其進行調試。
在這個例子中,%ERRORLEVEL%被調用兩次:從myperl.pl
1)返回到批次。
2)從mybatch.cmd返回到external.exe。這會是一個問題嗎?
謝謝@Aacini。該文件說「external.exe讀取mybatch.cmd的返回值,並且0成功,其他失敗」。如果我手動將批處理文件中的返回碼設置爲0或1,例如「設置結果= 0」,然後「退出%result%」,external.exe運行正常。問題是我需要在perl文件中設置值,而不是批處理文件。 – user1748640