‘else’ is not recognized as an internal or external command の解決方法

‘else’ is not recognized as an internal or external command の解決方法

コマンドプロンプト(CMD)でバッチスクリプトを実行中に「’else’ is not recognized as an internal or external command, operable program or batch file」というエラーが発生する場合があります。このエラーは、if-else文の記述ミスや構文エラーが主な原因です。本記事では、このエラーの発生条件と解決方法を解説します。

エラーの発生条件

  • if文とelse文の間に不適切な改行がある
  • コマンドブロックの括弧が正しく閉じられていない
  • バッチスクリプトの構文エラー

正しいif-else文の構文

バッチスクリプトでのif-else文は以下の形式で記述します。

if CONDITION (
    REM 条件が真の場合の処理
) else (
    REM 条件が偽の場合の処理
)

間違った例と修正方法

間違った記述例と正しい記述を比較します。

// 間違った例
if "%var%" == "value" (
    echo 条件が真
)
else (
    echo 条件が偽
)

// 修正後
if "%var%" == "value" (
    echo 条件が真
) else (
    echo 条件が偽
)

改行によるエラーを防ぐ

if文とelse文の間に改行がある場合、エラーが発生します。一行で記述するか、括弧の配置を確認してください。

// 改行によるエラー例
if "%var%" == "value" (
    echo 条件が真
)
else
(
    echo 条件が偽
)

// 修正後
if "%var%" == "value" (
    echo 条件が真
) else (
    echo 条件が偽
)

コマンドブロックの閉じ忘れ

括弧を閉じ忘れるとエラーが発生します。

// 閉じ忘れの例
if "%var%" == "value" (
    echo 条件が真
else (
    echo 条件が偽
)

// 修正後
if "%var%" == "value" (
    echo 条件が真
) else (
    echo 条件が偽
)

複数のコマンドを含むif-else文

if文とelse文の中に複数のコマンドを含める場合も、必ず括弧で囲みます。

if "%var%" == "value" (
    echo 条件が真
    echo 実行中
) else (
    echo 条件が偽
    echo 実行停止
)

変数の評価方法

環境変数の評価には正しい構文を使用してください。

// 間違った例
if %var% == value (
    echo 条件が真
)

// 修正後
if "%var%" == "value" (
    echo 条件が真
)

エラーが発生する具体例

以下のスクリプトはエラーを引き起こします。

// エラー例
if "%var%" == "value" (
    echo 条件が真
) else echo 条件が偽

管理者権限での実行を確認

一部のスクリプトは管理者権限が必要です。エラーが解決しない場合は、管理者としてコマンドプロンプトを実行してください。

// 管理者としてコマンドプロンプトを実行
右クリック -> 「管理者として実行」

デバッグ方法

スクリプトをデバッグする際には、エコー機能を使用して問題箇所を特定します。

// デバッグの例
setlocal enabledelayedexpansion
if "%var%" == "value" (
    echo 条件が真: %var%
) else (
    echo 条件が偽: %var%
)

まとめ

‘else’ is not recognized as an internal or external command エラーは、主に構文のミスや括弧の配置の誤りが原因です。正しい構文を使用し、スクリプトのデバッグを行うことで、エラーを解消できます。