我的問題如下:
目前是使用bat執行多個py,語法如下
cd C:\Users\Administrator\Desktop\XXX
start python Runstart.py
timeout /nobreak /t 7
由於有很多支py
我想要讓bat檔自己驗證這段語法是不是有執行成功
我想要的語法是: 如果這有執行成功,繼續執行下一段指令,如果執行失敗,則暫停該失敗的指令
想請問版上大大有教學嗎
不確定是不是你想要的(或是能改成你想要的):
## ExitWithCode.py
## 重點在首尾的 "sys"、"sys.exit()";
import sys
##
myExitCode = None
if(len(sys.argv)>1): ## 如果有附加參數;
if(sys.argv[1].isnumeric()): ## 如果附加參數是數值;
myExitCode = int(sys.argv[1]) ## 轉為整數;
##
sys.exit(myExitCode) ## 結束程式並送出退出碼;
##
然後,在批次檔(".bat" or ".cmd")內:
@rem GetExitCode.cmd
@echo off
echo LastErrorLevel(ExitCode):[%ErrorLevel%];
@rem "(call )" for resetting the "ErrorLevel";
(call )
echo P01:LastErrorLevel:[%ErrorLevel%];(After:reset)
python.exe ".\ExitWithCode.py" 12
echo P02:LastErrorLevel:[%ErrorLevel%];(12)
python.exe ".\ExitWithCode.py" a
echo P03:LastErrorLevel:[%ErrorLevel%];(a)
python.exe ".\ExitWithCode.py" 34
echo P04:LastErrorLevel:[%ErrorLevel%];(34)
我的輸出:
LastErrorLevel(ExitCode):[34];
P01:LastErrorLevel:[0];(After:reset)
P02:LastErrorLevel:[12];(12)
P03:LastErrorLevel:[0];(a)
P04:LastErrorLevel:[34];(34)
以上述範例之概念,就能在批次檔內,從 %ERRORLEVEL% 變數取得 python script 執行後的 ExitCode (可用以在批次檔內做 if
判斷的依據);
但要注意 %ERRORLEVEL% 的特性 就是了,以免取到被洗掉的資訊。
另,用 start 是開啟另一個執行序,不會把 python script 的結果傳給父執行序的 %ERRORLEVEL% 。