如何在批处理文件中查找命令输出中字符串的出现

时间:2014-01-07 23:57:33

标签: windows batch-file

我有一个python脚本,它执行测试并将命令行的pass或fail打印出来。 我想连续从批处理文件运行此脚本,直到它失败。 所以我需要从我的批处理文件中解析脚本的输出并“goto start” 或继续结束批处理文件。

我做了一些研究,似乎我需要使用for / f命令,但我不知道如何在整个输出中查找字符串。

假设我的脚本名为test.py,我想在其输出中查找字符串“PASS”。使用for / f命令的确切语法是什么?

我也对其他解决方案持开放态度。

3 个答案:

答案 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 ....