我编写了一个包含以下命令的批处理文件来检查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
任何人都可以帮我写一下这个剧本。
答案 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%