- 締切済み
バッチファイルのエラー時の分岐処理について
お世話になっております。 バッチファイル実行時のエラーの分岐処理についてご教授ください。 バッチを実行して、成功したときと失敗した時に別々のメールを送信するように下記のプログラムを作りました。 処理は成功しても、失敗してもJDE_Processing_Error.ps1のErrorのメールしか届きません。 成功したときに、JDE_Processing_Success.ps1を実行させるにはどこを直したらよろしいでしょうか? よろしくお願いいたします。 rem バッチ処理実行:バッチ処理実行後、ログファイルを出力する。 call java -jar C:\sikulix\sikulixide-2.0.5.jar -r C:\sikulix\Okumarukun\Okumarukun_sikuli\JDE_Processing.sikuli > C:\sikulix\Okumarukun\Okumarukun_BatchFile_Log\JDE_Processing_Log\%filename%.log rem エラー処理を記述:エラーが起きたら、PowerShellのタスクを切る。 rem Success/Error時にメールを送信する。 if %ERRORLEVEL% equ 0 ( echo Success start /min powershell -WindowStyle Hidden -Command "C:\sikulix\Okumarukun\Okumarukun_BatchFile\Mail\JDE_Processing_Success.ps1" timeout /t 2 > nul ) else ( echo Error start /min powershell -WindowStyle Hidden -Command "C:\sikulix\Okumarukun\Okumarukun_BatchFile\Mail\JDE_Processing_Error.ps1" taskkill /im powershell_ise.exe )
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- yumi-access
- ベストアンサー率21% (36/170)
ログをもう少し正確に出すようにしたほうが良いと思います。 if文の構文や変数などあっているのか確認すると良いと思います。 ※言語やツールによって手法やルールが異なります
- kteds
- ベストアンサー率42% (1883/4441)
下記を試してください。 setlocal enabledelayedexpansion と endlocal を追加する。 %ERRORLEVEL% ではなくて !ERRORLEVEL! を使う。(パーセント記号ではなくエクスクラメーションマークで囲む) --------------------------------- setlocal enabledelayedexpansion if !ERRORLEVEL! 0 ( echo Success start /min powershell -WindowStyle Hidden -Command "C:\sikulix\Okumarukun\Okumarukun_BatchFile\Mail\JDE_Processing_Success.ps1" timeout /t 2 > nul ) else ( echo Error start /min powershell -WindowStyle Hidden -Command "C:\sikulix\Okumarukun\Okumarukun_BatchFile\Mail\JDE_Processing_Error.ps1" taskkill /im powershell_ise.exe ) endlocal --------------------------------
- chie65536(@chie65535)
- ベストアンサー率44% (8757/19871)
callの次の行に echo %errorlevel% を入れてみて、成功時にエラーレベルが0になっている事を確認してみて下さい。 どう考えても「成功時に%ERRORLEVEL%が0以外の値になっている」としか思えません。