我有一個執行測試並打印通過或未通過命令行的python腳本。 我想從批處理文件中持續運行此腳本,直到失敗。 所以我需要從我的批處理文件中解析腳本的輸出,並且「goto start」 或繼續結束批處理文件。如何在批處理文件中查找出現字符串輸出命令
我做了一些研究,似乎我需要使用for/f命令,但我不知道如何在整個輸出中查找字符串。
可以說我的腳本叫做test.py,我想在它的輸出中尋找字符串「PASS」。使用for/f命令的確切語法是什麼?
我也對其他解決方案開放。
我有一個執行測試並打印通過或未通過命令行的python腳本。 我想從批處理文件中持續運行此腳本,直到失敗。 所以我需要從我的批處理文件中解析腳本的輸出,並且「goto start」 或繼續結束批處理文件。如何在批處理文件中查找出現字符串輸出命令
我做了一些研究,似乎我需要使用for/f命令,但我不知道如何在整個輸出中查找字符串。
可以說我的腳本叫做test.py,我想在它的輸出中尋找字符串「PASS」。使用for/f命令的確切語法是什麼?
我也對其他解決方案開放。
如果您希望腳本繼續,如果你的Python腳本的輸出PASS
那麼這應該做的伎倆 -
:loop
For /F %%a in ('test.py') do set output=%%a
if "%output%"=="PASS" goto :loop
如果沒有最後的if語句後有添加任何它將只結束腳本,如果你想要,你可以在if語句後面加上goto :EOF
(文件結束)。
根本不需要使用FOR /F
。
@echo off
:loop
test.py|find /i "pass" >nul
if NOT errorlevel 1 goto loop
如果蟒輸出含有pass
任何線(/i
使其不區分大小寫 - find "PASS"
將區分大小寫)然後errorlevel
被設置爲0
否則,errorlevel
設置>0
。
IF ERRORLEVEL n
如果errorlevel
是n 或大於n爲TRUE。 IF ERRORLEVEL 0
因此始終爲真,因此您需要if not errorlevel 1
才能測試errorlevel 0
。
這實際上是最好的解決方案,但由於這是一個知識庫,我選擇了以最初的預期方式解決問題的答案作爲最佳答案。謝謝 – Siavash
而不是批量處理,爲什麼不在你的test.py
?
while true:
... do your stuff
...
if result == "FAIL"
break
call some other commands ....
因爲我不應該修改python腳本。 – Siavash
downvoter必須是ixxxt – brianadams
所以「if」%output%「==」PASS「」會測試通過是否在輸出,不等於它? – Siavash
如果您的python腳本的輸出爲'PASS',批處理腳本將繼續。如果它不是'PASS',批處理腳本將結束。 – unclemeat
我正在尋找的解決方案是在整個系列中尋找「通過」的東西。所以即使投入是「測試1次通過」,它也會評估爲通過。測試子字符串的條件是什麼? – Siavash