• 締切済み

バッチファイルのIF文について

お世話になります。 現在バッチファイルを作成中なのですが、作成したバッチファイルを実行すると 「"("の使い方が間違っています」というエラーでこけてしまいます。 原因箇所は、下記コマンドの★部のIF文であることはほぼ間違いないのですが、 Webサイトで紹介されている原因である、「"("の直前やIF文内にコメントがあると発生する」という 条件には当てはまらないためエラーになる原因がわからず、投稿させていただきました。 ============================================= REM メイン処理 if %FLAG% == 1 ( echo %MSG1%から%MSG2%へPingを送信 ping -n 2 %PING_HOST% ) else ( echo 該当する設定がありません ) pause REM pingが通らなかった場合にイベントログにエラーを出力する if %Errorlebel% == "1" (   ★ echo 疎通不可 eventcreate /L Application /T ERROR /id 999 /d "%MSG1%から%MSG2%へ疎通不可。" ) else (                   ★ echo 疎通 eventcreate /L Application /T INFORMATION /id 111 /d "%MSG1%から%MSG2%へ疎通確認。" ) pause ============================================= よろしくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

誤: if %Errorlebel% == "1" (     変数名の誤りで文法エラー 誤: if %Errorlevel% == "1" (     変数名に誤りは無いが、右辺だけに""があるので絶対に==が真にならない 正: if "%Errorlevel%" == "1" (   "" ありで左右を統一 正: if %Errorlevel% == 1 (   "" なしで左右を統一

  • sngPoi2
  • ベストアンサー率49% (475/952)
回答No.2

エラーとなっている箇所は、下記だと推測します。 (1)if %ERRORLEVEL%=="1"(  =="1"と(の間のSPACEを削除 (2)if文の中の変数を多様した複数の命令  処理をサブルーチン化しif自体を簡略化 [sample] REM pingが通らなかった場合にイベントログにエラーを出力する if %ERRORLEVEL%=="1"( CALL:SUB1 )else( CALL:SUB2 ) pause :SUB1 echo 疎通不可 eventcreate /L Application /T ERROR /id 999 /d "%MSG1%から%MSG2%へ疎通不可。" goto:eof :SUB2 echo 疎通 eventcreate /L Application /T INFORMATION /id 111 /d "%MSG1%から%MSG2%へ疎通確認。" goto:eof

  • kawais070
  • ベストアンサー率52% (2242/4283)
回答No.1

if %Errorlebel% == "1" (   ↑ ここのところ、 × Errorlebel ○ ERRORLEVEL ってことで。

関連するQ&A