我有一个python脚本,它执行测试并将命令行的pass或fail打印出来。 我想连续从批处理文件运行此脚本,直到它失败。 所以我需要从我的批处理文件中解析脚本的输出并“goto start” 或继续结束批处理文件。
我做了一些研究,似乎我需要使用for / f命令,但我不知道如何在整个输出中查找字符串。
假设我的脚本名为test.py,我想在其输出中查找字符串“PASS”。使用for / f命令的确切语法是什么?
我也对其他解决方案持开放态度。
答案 0 :(得分:1)
如果你希望脚本继续,如果你的python脚本的输出是PASS
那么这应该做的 -
:loop
For /F %%a in ('test.py') do set output=%%a
if "%output%"=="PASS" goto :loop
如果你没有在最后的if语句之后添加任何内容,那么它只会结束脚本,如果你想要你可以在if语句之后添加goto :EOF
(文件结束)。
答案 1 :(得分:1)
您根本不需要使用FOR /F
。
@echo off
:loop
test.py|find /i "pass" >nul
if NOT errorlevel 1 goto loop
如果python输出包含pass
的任何行(/i
使其不区分大小写 - find "PASS"
区分大小写),则errorlevel
设置为{{1 }}否则,0
设置为errorlevel
。
>0
为n 或大于n ,则 IF ERRORLEVEL n
为TRUE。因此,errorlevel
始终为真,因此您需要IF ERRORLEVEL 0
来测试if not errorlevel 1
。
答案 2 :(得分:-1)
而不是批量执行,为什么不在test.py
?
while true:
... do your stuff
...
if result == "FAIL"
break
call some other commands ....