質問: batchファイル(Sample.bat)が起動しません。 ``` @echo off rem if ERRORLEVEL 0 rem #### 処理開始 ############################################################# echo %date% %time% Sample.bat処理開始 "C:\Program Files\clemb.exe" -stream "C:\batch\バッチ.str" -execute rem #### 処理終了 ############################################################# echo 処理終了 if ERRORLEVEL 1 rem #### エラー発生 ############################################################# echo %date% %time% Sample.bat処理開始 "C:\Program Files\clemb.exe" -stream "C:\batch\異常終了.str" -execute rem #### エラー処理終了 ############################################################# echo 処理終了 pause exit ``` と正常終了時と異常終了時で実行する処理を分けるように書きました。 しかし、書き方が悪いのか、batchファイルが起動しませんでした。 どのように直せばよいのでしょうか?
回答: IFの条件で複数の処理をしたい時は、括弧で囲みます。 ``` if errorlevel 1 ( echo %date% %time% Sample.bat処理開始 "C:\Program Files\clemb.exe" -stream "C:\batch\異常終了.str" -execute echo 処理終了 ) ``` また、`if errorlevel 0`は、「エラーレベルが0以上なら」という意味なので、常に真です。 先に`if errorlevel 1`(エラーレベルが1以上なら)を書かないと駄目です。 ということで、このようになります。 ``` if errorlevel 1 ( echo %date% %time% Sample.bat処理開始 "C:\Program Files\clemb.exe" -stream "C:\batch\異常終了.str" -execute echo 処理終了 ) else ( echo %date% %time% Sample.bat処理開始 "C:\Program Files\clemb.exe" -stream "C:\batch\バッチ.str" -execute echo 処理終了 ) ```