Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 检查批处理文件中的任务状态_Windows_Batch File_Batch Processing - Fatal编程技术网

Windows 检查批处理文件中的任务状态

Windows 检查批处理文件中的任务状态,windows,batch-file,batch-processing,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% 如果我写以下

我已经用以下命令编写了一个批处理文件来检查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%
如果我写以下内容:

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
如果我写以下内容:

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

任何人都可以帮我修改脚本。

如果您只需键入
ECHO
,后面没有任何内容,您就会收到消息
ECHO已关闭。
(或
打开
)。这表明变量为空

变量
%%I
一旦超出
FOR
DO
部分,就会失去作用域。如果我没有提供schtasks的完整路径,那么我在运行该行时也会遇到问题

这对我很有用:

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%
FOR/F%%I IN('C:\Windows\System32\schtasks.exe/QUERY/S/FO LIST/TN“\MICROSOFT\deploy\u db”^ FIND/C“Running”)DO(
如果%%I==0(设置状态=运行)或其他(设置状态=就绪)
回声%%I
)
回显%状态%
如果处于循环中,则状态更新可能会出现问题。如果是,请尝试:

SETLOCAL ENABLEDELAYEDEXPANSION
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!
SETLOCAL ENABLEDELAYEDEXPANSION
对于('C:\Windows\System32\schtasks.exe/QUERY/S/FO LIST/TN“\MICROSOFT\deploy\u db”^查找/C“Running”')中的/F%%I,请执行以下操作(
如果%%I==0(设置状态=运行)或其他(设置状态=就绪)
回声%%I
)
回声!地位

“但我收到以下错误:ECHO已关闭。”-这不是错误,这是您在没有参数的情况下调用
ECHO
时得到的结果,它会报告状态。使用
在第一行末尾结束for循环,并且
ECHO%%I
在循环之外。第二个选项是不正确的,因为您必须
do
在同一行,而不是在下一行。您还需要谷歌
为您的环境变量启用DelayedExpansion
。您知道PowerShell可以
(获取ScheduledTask“deploy\u db”).State
,或
Get ScheduledTask |其中State-eq正在运行
对吗?我是Powershell的障碍,如何将其放入循环中。运行一个Schtask并不断检查,直到完成为止?
启动ScheduledTask“whatever”;启动睡眠-秒5;而((Get ScheduledTask“whatever”).State-eq正在运行){启动睡眠-秒5}
必须在“-eq”运算符的右侧提供一个值表达式。在C:\resources\code\Test\Schtask\u t.ps1:4 char:48+while((Get ScheduledTask“whatever”)。state-eq