我们需要检查计划任务的状态,以确定在此之后运行的其他任务,例如:
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“,但我们不确定。
我们如何编写脚本来实现我们的最终目标?
答案 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 )