【发布时间】:2016-10-23 09:18:14
【问题描述】:
我已经使用以下命令编写了一个批处理文件来检查 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
谁能帮我写剧本。
【问题讨论】:
-
"但我收到以下错误:ECHO 已关闭。" - 这不是错误,这是您在没有参数的情况下调用
echo时得到的,它报告状态。你在第一行的末尾用))结束for 循环,ECHO %%I在循环之外。第二个不正确,因为您必须将(与do放在同一行,而不是在下一行。您还需要在 GoogleEnableDelayedExpansion上搜索您的环境变量。 -
你知道 PowerShell 可以做到
(Get-ScheduledTask 'deploy_db').State或Get-ScheduledTask |Where State -eq Running对吗? -
我是 Powershell 的菜鸟,我怎么能把它放在 Loop 中。运行一个 Schtask 并继续检查直到它完成?
-
Start-ScheduledTask 'whatever'; start-sleep -seconds 5; while ((Get-ScheduledTask 'whatever').state -eq Running) { start-sleep -seconds 5 } -
您必须在“-eq”运算符的右侧提供一个值表达式。在 C:\resources\code\Test\Schtask_t.ps1:4 char:48 + while ((Get-ScheduledTask 'whatever').state -eq
标签: windows batch-file batch-processing