2017-01-10 2 views
1

スケジュールされたタスクが存在するかどうかを確認するバッチファイルを作成しましたが、作成していない場合、存在するルールは存在しません。スケジュールされたタスクにIFが存在する

アイデア?あなたがschtasksif existを使用することはできません

::Check Rule 
IF EXIST SchTasks /QUERY /TN "Cache Task Morning" ( 
    echo ! Morning rule in place! 
    GOTO NEXT 
) ELSE IF NOT EXIST SchTasks /Create /SC DAILY /TN "Cache Task Morning" /TR "C:\Cache Clear\Cache Clear.bat" /ST 09:00 

:NEXT 
IF EXIST SchTasks /QUERY /TN "Cache Task Afternoon" ( 
    echo ! Afternoon rule in place! 
    GOTO NEXT TWO 
) ELSE IF NOT EXIST SchTasks /Create /SC DAILY /TN "Cache Task Afternoon" /TR "C:\Cache Clear\Cache Clear.bat" /ST 15:00 

:NEXT TWO 
IF EXIST SchTasks /QUERY /TN "Cache Task Evening" ( 
    echo ! Evening rule in place! 
    GOTO CLEAR CACHE 
) ELSE IF NOT EXIST SchTasks /Create /SC DAILY /TN "Cache Task Evening" /TR "C:\Cache Clear\Cache Clear.bat" /ST 18:00 
+4

あなたは 'IF EXIST' /' IF NOT EXIST'というように 'SchTasks'を実行し、出力または' ErrorLevel'のいずれかをキャプチャし、返されたコマンドに従ってコマンドを実行する必要があります。 – Compo

+2

新しいコマンドプロンプトウィンドウを開き、 'help if'または' if /? 'と入力してヘルプをよく読んでください。もし存在すれば何をするのかを学びます... – aschipfl

答えて

4

、これはif existの目的ではありません。

使用のいずれか

schtasks /query /TN "task_name" >NUL 2>&1 || schTasks /Create /SC DAILY /TN "task_name" ... 

または

schtasks /query /TN "task_name" >NUL 2>&1 
if %errorlevel% NEQ 0 schTasks /Create /SC DAILY /TN "task_name" ... 

>NUL 2>&1抑制の成功またはエラー出力

が、私たちは 0から errorlevel設定されている場合、成功を持っていない、または 0故障の場合。

どちらも同じです。最初のケースでは、コマンド&&||を使用します。ここで、&&は前のコマンドが成功したことを意味し、||は前のコマンドが失敗したことを意味します。

mycommand && echo success || echo error

のように

我々は唯一の失敗をテストしたいと、その後、(前のコマンドが失敗した)だけ||を使用しています。

関連する問題