检查批处理文件中的SCHTASKS状态

时间:2016-06-21 17:33:54

标签: windows batch-file batch-processing

我编写了一个包含以下命令的批处理文件来检查schtasks状态,我打算将其置于循环中。

FOR /F %%I IN ('SCHTASKS /QUERY /S <servername> /FO LIST /TN "\MICROSOFT\deploy_db" ^| FIND /C "Running"') DO (IF %%I == 0 ( SET STATUS=Running) Else ( SET Status=Ready))
ECHO %%I
ECHO %STATUS%

但我收到以下错误:

ECHO is off.
ECHO is off.

如果我写下以下内容:

FOR /F %%I IN ('SCHTASKS /QUERY /S <servername> /FO LIST /TN "\MICROSOFT\deploy_db" ^| FIND /C "Running"') DO 
(IF %%I == 0 ( SET STATUS=Running) Else ( SET Status=Ready))
ECHO %%I
ECHO %STATUS%

如果我执行上述操作,请获取以下内容:

The syntax of the command is incorrect

如果我写下以下内容:

FOR /F %%I IN ('SCHTASKS /QUERY /S <servername> /FO LIST /TN "\MICROSOFT\deploy_db" ^| FIND /C "Running"') DO (IF %%I == 0 ( SET STATUS=Running) Else ( SET Status=Ready))
ECHO %STATUS%

如果我执行上述操作,请获取以下内容:

Running

任何人都可以帮我写一下这个剧本。

1 个答案:

答案 0 :(得分:2)

如果您只是在其后面没有输入ECHO is off.,则会收到消息on(或echo)。这表明你的变量是空的。

一旦您离开%%I的{​​{1}}部分,变量DO就会失去范围。如果我没有提供schtasks的完整路径,我也有问题让线路运行。

这对我有用:

FOR

如果您处于循环中,则可能会出现STATUS更新问题。如果是这样,请尝试:

FOR /F %%I IN ('C:\Windows\System32\schtasks.exe /QUERY /S <servername> /FO LIST /TN "\MICROSOFT\deploy_db" ^| FIND /C "Running"') DO (
    IF %%I == 0 (SET STATUS=Running) Else (SET Status=Ready)
    ECHO %%I
)
ECHO %STATUS%