2016-06-21 9 views
2

次のコマンドでバッチファイルを作成してschtasksのステータスを確認しましたが、これをループに入れる予定です。バッチファイルの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

:もしそうなら、してみてください - それはエラーではありません、それはあなたがパラメータなしでecho' 'を呼び出したときに何を得るのです、それが報告状態。最初の行の終わりにforループを '))'で終了し、 'ECHO %% I'がループの外側にあります。 2番目のものは間違っています。 '(' do'と同じ行にあり、次の行ではなく、環境変数のために 'EnableDelayedExpansion'をGoogleにしたいと思っています) – TessellatingHeckler

+0

あなたはPowerShellができることを知っています(Get-ScheduledTask 'deploy_db')。State'、または 'Get-ScheduledTask | State -eq Running' right? – TessellatingHeckler

+0

Powershellのnoobですが、どのようにしてループに入れることができますか?Schtaskを実行し、 (start-sleep -seconds 5) ' –

答えて

2

echoの後に何も入力しないと、メッセージECHO is off.(またはon)が表示されます。変数が空であることを示す記号です。

FORDO部分から外れると、変数%%Iは有効範囲を失います。私は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% 

あなたがループ内であれば、あなたはSTATUS更新に問題があることがあります。 「*しかし、私はこの次のエラーを取得しています:ECHOがオフになっている*。」

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! 
関連する問題