[コマンドプロンプト] ifコマンドの使い方 – バッチでの条件分岐

コマンドプロンプトのifコマンドは、バッチファイルで条件分岐を行うために使用されます。

基本的な構文はif 条件 コマンドです。

条件には、数値や文字列の比較、ファイルの存在確認、エラーレベルのチェックなどが含まれます。

例えば、if %var%==value echo "一致"のように変数の値を比較したり、if exist filename echo "ファイルが存在"でファイルの存在を確認できます。

elseを使って条件が満たされない場合の処理も可能です。

この記事でわかること
  • ifコマンドの基本的な使い方
  • 数値や文字列の比較方法
  • ファイルやディレクトリの存在確認
  • エラーレベルを利用した処理
  • 複数条件を組み合わせた例

目次から探す

ifコマンドの基本構文

ifコマンドは、Windowsのコマンドプロンプトやバッチファイルにおいて条件分岐を実現するための基本的な構文です。

このコマンドを使用することで、特定の条件が満たされた場合にのみ特定の処理を実行することができます。

基本的な構文は以下の通りです。

if 条件 コマンド

ここで「条件」には、数値や文字列の比較、ファイルやディレクトリの存在確認などが含まれます。

条件が真(True)の場合、指定した「コマンド」が実行されます。

条件が偽(False)の場合は、次のコマンドに進むか、elseを使用して別の処理を実行することができます。

例えば、数値の比較を行う場合は次のように記述します。

if %var%==10 (
    echo 変数は10です
)

この例では、変数varが10である場合に「変数は10です」と表示されます。

ifコマンドを使うことで、バッチファイルの処理を柔軟に制御することが可能です。

数値や文字列の比較

条件分岐を行う際、数値や文字列の比較は非常に重要です。

ここでは、数値の比較方法と文字列の比較方法について詳しく解説します。

数値の比較方法

数値の比較は、ifコマンドを使用して行います。

以下に、等しいかどうかの比較と大小比較の方法を示します。

等しいかどうかの比較

数値が等しいかどうかを比較するには、==演算子を使用します。

以下はその例です。

set var=10
if %var%==10 (
    echo 変数は10です
)

このコードでは、変数varが10である場合に「変数は10です」と表示されます。

大小比較

数値の大小を比較するには、LSS(Less than)、LEQ(Less than or equal)、GTR(Greater than)、GEQ(Greater than or equal)を使用します。

以下はその例です。

set var=5
if %var% LSS 10 (
    echo 変数は10より小さいです
)

このコードでは、変数varが10より小さい場合に「変数は10より小さいです」と表示されます。

文字列の比較方法

文字列の比較もifコマンドを使用して行います。

文字列の比較には、等しいかどうかの比較と大文字・小文字の区別、部分一致の確認があります。

大文字・小文字の区別

文字列の比較は大文字と小文字を区別します。

以下はその例です。

set str1=Hello
set str2=hello
if %str1%==%str2% (
    echo 文字列は等しいです
) else (
    echo 文字列は等しくありません
)

このコードでは、str1str2が異なるため「文字列は等しくありません」と表示されます。

部分一致の確認

部分一致の確認には、findstrコマンドを使用します。

以下はその例です。

echo Hello World | findstr "World"
if %errorlevel%==0 (
    echo 部分一致しました
)

このコードでは、 Hello World という文字列に World が含まれているため、「部分一致しました」と表示されます。

findstrを使うことで、より柔軟な文字列の比較が可能になります。

ファイルやディレクトリの存在確認

ifコマンドを使用して、ファイルやディレクトリの存在を確認することができます。

これにより、特定のファイルやディレクトリが存在するかどうかに応じて処理を分岐させることが可能です。

以下に、ファイルとディレクトリの存在確認の方法を解説します。

ファイルの存在確認

ファイルの存在を確認するには、if exist構文を使用します。

以下はその例です。

if exist "C:\path\to\file.txt" (
    echo ファイルは存在します
) else (
    echo ファイルは存在しません
)

このコードでは、指定したパスにfile.txtが存在する場合に「ファイルは存在します」と表示されます。

ディレクトリの存在確認

ディレクトリの存在確認も同様にif existを使用します。

以下はその例です。

if exist "C:\path\to\directory" (
    echo ディレクトリは存在します
) else (
    echo ディレクトリは存在しません
)

このコードでは、指定したパスにディレクトリが存在する場合に「ディレクトリは存在します」と表示されます。

ファイルが存在しない場合の処理

ファイルが存在しない場合に特定の処理を行うことも可能です。

以下はその例です。

if not exist "C:\path\to\file.txt" (
    echo ファイルが存在しないため、新しいファイルを作成します
    echo これは新しいファイルです > "C:\path\to\file.txt"
)

このコードでは、file.txtが存在しない場合に新しいファイルを作成し、「これは新しいファイルです」という内容を書き込みます。

ファイルの読み取り専用属性の確認

ファイルの属性を確認するには、if existattribコマンドを組み合わせて使用します。

以下はその例です。

if exist "C:\path\to\file.txt" (
    attrib "C:\path\to\file.txt" | find "R"
    if %errorlevel%==0 (
        echo ファイルは読み取り専用です
    ) else (
        echo ファイルは読み取り専用ではありません
    )
)

このコードでは、file.txtが存在する場合にその属性を確認し、読み取り専用であれば「ファイルは読み取り専用です」と表示します。

attribコマンドを使用することで、ファイルの属性を柔軟に確認することができます。

エラーレベルの確認

エラーレベルは、コマンドやプログラムの実行結果を示す整数値で、特にバッチファイルやスクリプトにおいて重要な役割を果たします。

エラーレベルを確認することで、処理の成功や失敗を判断し、適切な処理を行うことができます。

エラーレベルとは

エラーレベルは、コマンドが正常に実行されたかどうかを示す値です。

通常、成功した場合は0が返され、エラーが発生した場合は1以上の値が返されます。

これにより、後続の処理を条件分岐させることが可能になります。

エラーレベルの確認方法

エラーレベルを確認するには、%errorlevel%変数を使用します。

以下はその例です。

command
if %errorlevel%==0 (
    echo コマンドは成功しました
) else (
    echo コマンドは失敗しました
)

このコードでは、commandが成功した場合に「コマンドは成功しました」と表示され、失敗した場合には「コマンドは失敗しました」と表示されます。

エラーレベルを使った条件分岐

エラーレベルを使って条件分岐を行うことで、エラー処理を柔軟に行うことができます。

以下はその例です。

command1
if %errorlevel% neq 0 (
    echo command1が失敗しました
    exit /b
)
command2
if %errorlevel% neq 0 (
    echo command2が失敗しました
)

このコードでは、command1が失敗した場合にエラーメッセージを表示し、バッチファイルを終了します。

command2も同様にエラーレベルを確認し、失敗した場合にメッセージを表示します。

複数のエラーレベルを使った条件分岐

複数のエラーレベルを使って、異なるエラーに対して異なる処理を行うことも可能です。

以下はその例です。

command
if %errorlevel%==0 (
    echo コマンドは成功しました
) else if %errorlevel%==1 (
    echo エラー1が発生しました
) else if %errorlevel%==2 (
    echo エラー2が発生しました
) else (
    echo その他のエラーが発生しました
)

このコードでは、commandの実行結果に応じて、成功時や特定のエラーに対するメッセージを表示します。

これにより、エラーの種類に応じた適切な処理を行うことができます。

エラーレベルを活用することで、バッチファイルの信頼性と柔軟性を向上させることができます。

elseを使った条件分岐

elseを使用することで、ifコマンドの条件が偽(False)である場合に実行される処理を指定することができます。

これにより、条件分岐の柔軟性が向上し、より複雑なロジックを構築することが可能です。

elseの基本的な使い方

elseは、ifコマンドと組み合わせて使用します。

基本的な構文は以下の通りです。

if 条件 (
    コマンド1
) else (
    コマンド2
)

この構文では、条件が真(True)の場合にコマンド1が実行され、条件が偽(False)の場合にはコマンド2が実行されます。

以下はその例です。

set var=5
if %var%==10 (
    echo 変数は10です
) else (
    echo 変数は10ではありません
)

このコードでは、varが10でないため「変数は10ではありません」と表示されます。

else ifを使った複数条件の分岐

複数の条件をチェックする場合、else ifを使用することで、より詳細な条件分岐が可能になります。

以下はその例です。

set var=15
if %var%==10 (
    echo 変数は10です
) else if %var%==15 (
    echo 変数は15です
) else (
    echo 変数は10でも15でもありません
)

このコードでは、varが15であるため「変数は15です」と表示されます。

else ifを使うことで、複数の条件を順に評価し、適切な処理を実行することができます。

elseを使ったネスト構造

elseを使った条件分岐は、ネスト構造にすることも可能です。

これにより、さらに複雑な条件分岐を実現できます。

以下はその例です。

set var=20
if %var%==10 (
    echo 変数は10です
) else (
    if %var%==15 (
        echo 変数は15です
    ) else (
        echo 変数は10でも15でもありません
    )
)

このコードでは、最初の条件が偽であるため、次のif文が評価されます。

varが15でないため、最終的に「変数は10でも15でもありません」と表示されます。

ネスト構造を使用することで、条件分岐のロジックをより詳細に制御することができます。

複数条件の組み合わせ

条件分岐を行う際に、複数の条件を組み合わせることで、より複雑なロジックを実現することができます。

ここでは、AND条件とOR条件の使い方、さらにそれらを組み合わせた例について解説します。

AND条件の使い方

AND条件を使用することで、複数の条件がすべて真(True)である場合にのみ処理を実行することができます。

Windowsのコマンドプロンプトでは、if文をネストすることでAND条件を実現します。

以下はその例です。

set var1=10
set var2=20
if %var1%==10 (
    if %var2%==20 (
        echo var1は10で、var2は20です
    )
)

このコードでは、var1が10であり、かつvar2が20である場合に「var1は10で、var2は20です」と表示されます。

OR条件の使い方

OR条件を使用することで、いずれかの条件が真(True)である場合に処理を実行することができます。

OR条件も、if文をネストすることで実現します。

以下はその例です。

set var1=10
set var2=15
if %var1%==10 (
    echo var1は10です
) else if %var2%==15 (
    echo var2は15です
)

このコードでは、var1が10であるため「var1は10です」と表示されます。

もしvar1が10でなければ、次の条件としてvar2が15であるかどうかが評価されます。

複数条件を組み合わせた例

AND条件とOR条件を組み合わせることで、さらに複雑な条件分岐を実現できます。

以下はその例です。

set var1=10
set var2=20
set var3=30
if %var1%==10 (
    if %var2%==20 (
        echo var1は10で、var2は20です
    ) else if %var3%==30 (
        echo var1は10ですが、var3は30です
    )
) else (
    echo var1は10ではありません
)

このコードでは、var1が10であり、var2が20である場合に「var1は10で、var2は20です」と表示されます。

もしvar2が20でなければ、次にvar3が30であるかどうかが評価され、「var1は10ですが、var3は30です」と表示されます。

これにより、複数の条件を組み合わせて柔軟な処理を実現することができます。

応用例

ここでは、ifコマンドや条件分岐を活用した具体的なバッチファイルの応用例を紹介します。

これにより、実際のシナリオでの使い方を理解しやすくなります。

ファイルの存在を確認して処理を分岐するバッチ

ファイルの存在を確認し、その結果に応じて処理を分岐させるバッチファイルの例です。

@echo off
set filePath="C:\path\to\file.txt"
if exist %filePath% (
    echo ファイルは存在します。処理を続行します。
    rem ここにファイルが存在する場合の処理を記述
) else (
    echo ファイルは存在しません。新しいファイルを作成します。
    echo これは新しいファイルです > %filePath%
)

このバッチファイルでは、指定したファイルが存在するかどうかを確認し、存在する場合は処理を続行し、存在しない場合は新しいファイルを作成します。

エラーレベルを使ったエラーハンドリング

エラーレベルを利用して、コマンドの実行結果に基づいてエラーハンドリングを行う例です。

@echo off
command1
if %errorlevel% neq 0 (
    echo command1が失敗しました。エラーレベル: %errorlevel%
    exit /b
)
command2
if %errorlevel% neq 0 (
    echo command2が失敗しました。エラーレベル: %errorlevel%
) else (
    echo command2は成功しました。
)

このバッチファイルでは、command1command2の実行結果を確認し、失敗した場合にはエラーメッセージを表示します。

ユーザー入力に応じた処理の分岐

ユーザーからの入力に基づいて処理を分岐させるバッチファイルの例です。

@echo off
set /p userInput=処理を選択してください (1: 処理A, 2: 処理B): 
if %userInput%==1 (
    echo 処理Aを実行します。
    rem 処理Aの内容を記述
) else if %userInput%==2 (
    echo 処理Bを実行します。
    rem 処理Bの内容を記述
) else (
    echo 無効な選択です。
)

このバッチファイルでは、ユーザーが選択した処理に応じて異なる処理を実行します。

複数の条件を組み合わせた高度なバッチ処理

複数の条件を組み合わせて、より高度な処理を行うバッチファイルの例です。

@echo off
set var1=10
set var2=20
set var3=30
if %var1%==10 (
    if %var2%==20 (
        echo var1は10で、var2は20です。
        if %var3%==30 (
            echo さらに、var3は30です。
        )
    ) else (
        echo var2は20ではありません。
    )
) else (
    echo var1は10ではありません。
)

このバッチファイルでは、var1var2var3の値に基づいて、複数の条件を評価し、適切なメッセージを表示します。

これにより、条件に応じた柔軟な処理が可能になります。

よくある質問

ifコマンドで大文字・小文字を区別しない比較は可能?

Windowsのコマンドプロンプトにおけるifコマンドは、デフォルトでは大文字と小文字を区別します。

つまり、Hellohelloは異なる文字列として扱われます。

大文字・小文字を区別しない比較を行いたい場合は、文字列をすべて大文字または小文字に変換してから比較する方法があります。

例えば、setコマンドを使って変数を変換することができます。

set str1=Hello
set str2=hello
if /I %str1%==%str2% (
    echo 文字列は等しいです
)

このように、/Iオプションを使用することで、大文字・小文字を区別しない比較が可能です。

複数の条件を同時にチェックする方法は?

複数の条件を同時にチェックするには、if文をネストする方法や、&&(AND)や||(OR)を使用する方法があります。

AND条件の場合は、ネストしたif文を使い、OR条件の場合は、if文を連結して使用します。

例(AND条件):

if %var1%==10 (
    if %var2%==20 (
        echo 両方の条件が満たされました
    )
)

例(OR条件):

if %var1%==10 (
    echo var1は10です
) || (
    echo var1は10ではありません
)

このように、条件を組み合わせることで、複数の条件を同時にチェックすることができます。

else ifはどのように使うの?

else ifは、複数の条件を評価する際に使用します。

if文の後に続けてelse ifを記述することで、最初の条件が偽(False)の場合に次の条件を評価します。

これにより、複数の条件を順にチェックし、適切な処理を実行することができます。

set var=15
if %var%==10 (
    echo 変数は10です
) else if %var%==15 (
    echo 変数は15です
) else (
    echo 変数は10でも15でもありません
)

このコードでは、varの値に応じて異なるメッセージが表示されます。

else ifを使うことで、条件分岐をより柔軟に構築することができます。

まとめ

この記事では、Windowsのコマンドプロンプトにおけるifコマンドの使い方や条件分岐の方法について詳しく解説しました。

特に、数値や文字列の比較、ファイルやディレクトリの存在確認、エラーレベルの確認、そしてelseや複数条件の組み合わせについて具体的な例を通じて説明しました。

これらの知識を活用することで、バッチファイルの作成やコマンドプロンプトでの処理をより効率的に行うことができるでしょう。

ぜひ、実際のシナリオでこれらのテクニックを試してみて、あなたのスクリプト作成に役立ててください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • コマンドプロンプト (92)
  • Bash (127)
  • URLをコピーしました!
目次から探す