cmd dos将字符串与while循环进行比较

时间:2013-03-06 05:33:00

标签: windows scripting cmd

我们需要检查计划任务的状态,以确定在此之后运行的其他任务,例如:

c:\software\scripts>find /I /C "Running" status.txt

---------- STATUS.TXT: 0

我们想知道如何编写cmd脚本以在此命令上执行“while”循环,直到输出变为

---------- STATUS.TXT: 1

我们考虑过使用set /p teststring=find /I /C "Running" status.txt,希望该命令的输出将参数teststring设置为“---------- STATUS.TXT:0”,然后与“---”进行比较------- STATUS.TXT:1“,但我们不确定。

我们如何编写脚本来实现我们的最终目标?

1 个答案:

答案 0 :(得分:2)

批处理语法不提供while指令,因此您必须使用goto。此外,无需比较字符串或计算搜索字符串的出现次数。 find会返回不同的%errorlevel%,具体取决于是否找到了搜索字符串。试试这个:

:LOOP
find /i "running" status.txt >nul
if %errorlevel% neq 0 goto LOOP

在再次尝试之前添加一些延迟可能是个好主意:

:LOOP
find /i "running" status.txt >nul
if %errorlevel% neq 0 (
  ping -n 2 127.0.0.1 >nul
  goto LOOP
)

编辑:根据@dbenham的建议,更紧凑的表单可能如下所示:

:LOOP
find /i "running" status.txt >nul || ( ping -n 2 127.0.0.1 >nul & goto LOOP )