1. ホーム
  2. if-statement

[解決済み] DOSバッチファイル内にIFブロックを持つことはできますか?

2022-11-04 12:50:42

質問

DOSのバッチファイルでは、if文の本文は1行しか書けないのでしょうか?どこかで見つけたのですが () と同じように if ブロックに {} のようなifブロックにするのですが、これをやっても実行されません。エラーメッセージもありません。これは私のコードです。

if %GPMANAGER_FOUND%==true(echo GP Manager is up
goto Continue7
)
echo GP Manager is down
:Continue7

バッチファイルを実行すると、不思議なことに "GP Manager is up" と "GP Manager is down" のどちらも出力されません。

解決方法を教えてください。

確かに、条件文の後に実行するステートメントのブロックを配置することができます。しかし、あなたは構文を間違えています。括弧は図のように正確に使用する必要があります。

if <statement> (
    do something
) else (
    do something else
)

しかし、私は else-if ステートメントのための組み込み構文はないと思います。不幸にも、あなたはネストされた if ステートメントを作成する必要があります。



次に、その %GPMANAGER_FOUND% == true のテストは、私にはかなり怪しく見えます。環境変数が何に設定されているのか、あるいはどのように設定しているのか分かりませんが、あなたが示したコードがあなたが探している結果を生むかどうか、私は非常に疑います。



次のサンプル コードは、私にとってはうまく機能します。

@echo off

if ERRORLEVEL == 0 (
    echo GP Manager is up
    goto Continue7
)
echo GP Manager is down
:Continue7

私のサンプルコードについて、いくつかの具体的な内容に注意してください。

  • 条件文の終わりと、開始括弧の間に追加されたスペース。
  • を設定しています。 @echo off を表示しないように すべて で始まるステートメントの出力だけを見るようにします。 echo .
  • 私は、組み込みの ERRORLEVEL 変数をテストとして使用しています。もっと読む ここで