0

我们需要检查一个计划任务的状态,以决定之后要运行哪些其他任务,例如:

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",但我们不确定。

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

4

1 回答 1

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 )
于 2013-03-06T08:52:31.383 回答