MENU

バッチファイルで使える制御文の基本【if文】

バッチファイルには、制御文を使ってプログラムの流れを制御することができます。

これにより、より複雑で柔軟なスクリプトを作成することが可能です。

ここでは、基本的な制御文であるif文について説明します。

目次

if文の基本構文と使い方

if文は、条件に基づいて異なる処理を実行するための制御文です。

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

if condition command

conditionには条件式を、commandには条件が真の場合に実行するコマンドを指定します。

例として、ファイルの存在をチェックするスクリプトを見てみましょう。

if exist "C:\example.txt" echo ファイルが存在します。

このスクリプトでは、C:\example.txtというファイルが存在する場合に「ファイルが存在します。」というメッセージを表示します。

if文を使った条件分岐の例

if文を使うと、複数の条件に基づいて異なる処理を行うことができます。

例えば、ユーザー入力に基づいて処理を分岐させるスクリプトを作成します。

set /P choice=Y/N を入力してください: 
if /I "%choice%"=="Y" (
    echo はいが選択されました。
) else (
    echo いいえが選択されました。
)

このスクリプトでは、ユーザーに「Y」または「N」の入力を求め、入力に応じて異なるメッセージを表示します。

/Iオプションを使うと、大文字小文字を区別しません。

バッチファイルで使えるネストされたif文の基本

ネストされたif文を使用することで、バッチファイル内で複雑な条件分岐を実装することができます。

これにより、より高度な制御が可能になり、スクリプトの柔軟性が大幅に向上します。

ここでは、ネストされたif文の基本構造とその使い方について説明します。

ネストされたif文とは?

ネストされたif文とは、if文の中にさらにif文を含む構造のことです。

これにより、複数の条件を組み合わせて、細かい制御を行うことができます。

例えば、特定の条件が満たされた場合にさらに別の条件をチェックして、異なる処理を実行することが可能です。

ネストされたif文の基本構文

ネストされたif文の基本構文は以下の通りです。

if condition1 (
    if condition2 (
        command1
    ) else (
        command2
    )
) else (
    if condition3 (
        command3
    ) else (
        command4
    )
)

この構文では、最初のif文が条件1をチェックし、それが真の場合に次のif文が条件2をチェックします。

条件2が真の場合はcommand1が実行され、偽の場合はcommand2が実行されます。

最初のif文が偽の場合は、条件3をチェックし、その結果に応じてcommand3またはcommand4が実行されます。

ネストされたif文を使った条件分岐の例

具体的な例として、ファイルの存在とそのサイズをチェックするスクリプトを見てみましょう。

set FILE_PATH=C:\example.txt

if exist %FILE_PATH% (
    echo ファイルが存在します。
    if %~z0 GEQ 1024 (
        echo ファイルサイズは1KB以上です。
    ) else (
        echo ファイルサイズは1KB未満です。
    )
) else (
    echo ファイルが存在しません。
)

このスクリプトでは、まず%FILE_PATH%に指定されたファイルが存在するかどうかをチェックします。

存在する場合は、ファイルサイズが1KB以上かどうかをチェックし、その結果に応じてメッセージを表示します。

存在しない場合は、「ファイルが存在しません。」というメッセージを表示します。

複数の条件を組み合わせたスクリプトの作成

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

例えば、ユーザーの入力に基づいて複数の条件をチェックし、異なる処理を実行するスクリプトを作成します。

set /P USER_INPUT=ファイルのパスを入力してください: 

if exist %USER_INPUT% (
    echo ファイルが存在します。
    if %~z0 GEQ 1024 (
        echo ファイルサイズは1KB以上です。
    ) else (
        echo ファイルサイズは1KB未満です。
    )
    if %~x0==.txt (
        echo テキストファイルです。
    ) else (
        echo テキストファイルではありません。
    )
) else (
    echo ファイルが存在しません。
)

このスクリプトでは、ユーザーにファイルのパスを入力させ、そのファイルが存在するかどうかをチェックします。

存在する場合は、ファイルサイズと拡張子をチェックし、それぞれの条件に応じて異なるメッセージを表示します。

ネストされたif文を使ったバッチファイルの例

次に、ネストされたif文を使った具体的なバッチファイルの作成手順について説明します。

基本的なネストされたif文の例

基本的なネストされたif文を使った簡単なスクリプトを作成します。

set /P NUMBER=数値を入力してください: 

if %NUMBER% GTR 0 (
    if %NUMBER% LEQ 100 (
        echo 入力された数値は0より大きく、100以下です。
    ) else (
        echo 入力された数値は100より大きいです。
    )
) else (
    echo 入力された数値は0以下です。
)

このスクリプトでは、ユーザーに数値を入力させ、その数値が0より大きく100以下であるかどうかをチェックします。

条件に応じて適切なメッセージを表示します。

ユーザー入力を使ったネストされた条件分岐

ユーザー入力を使ったネストされた条件分岐を実装します。

set /P OPTION=オプションを選択してください (1-3): 

if "%OPTION%"=="1" (
    echo オプション1が選択されました。
    set /P SUB_OPTION=サブオプションを選択してください (A-B): 
    if /I "%SUB_OPTION%"=="A" (
        echo サブオプションAが選択されました。
    ) else if /I "%SUB_OPTION%"=="B" (
        echo サブオプションBが選択されました。
    ) else (
        echo 無効なサブオプションです。
    )
) else if "%OPTION%"=="2" (
    echo オプション2が選択されました。
) else if "%OPTION%"=="3" (
    echo オプション3が選択されました。
) else (
    echo 無効なオプションです。
)

このスクリプトでは、ユーザーにオプションを選択させ、そのオプションに応じて異なるメッセージを表示します。

オプション1が選択された場合は、さらにサブオプションを選択させ、その結果に応じてメッセージを表示します。

複雑なネストされたif文の実装例

より複雑なネストされたif文を使ったスクリプトを作成します。

set /P FILE_PATH=ファイルのパスを入力してください: 
set /P SIZE_LIMIT=サイズ制限を入力してください (KB単位): 

if exist %FILE_PATH% (
    echo ファイルが存在します。
    if %~z0 GEQ %SIZE_LIMIT% (
        echo ファイルサイズは %SIZE_LIMIT% KB以上です。
        if %~x0==.txt (
            echo テキストファイルです。
        ) else (
            echo テキストファイルではありません。
        )
    ) else (
        echo ファイルサイズは %SIZE_LIMIT% KB未満です。
    )
) else (
    echo ファイルが存在しません。
)

このスクリプトでは、ユーザーにファイルのパスとサイズ制限を入力させ、そのファイルが存在し、かつ指定されたサイズ以上かどうかをチェックします。

さらに、ファイルがテキストファイルかどうかもチェックし、結果に応じて適切なメッセージを表示します。

サンプルコード:if 文

ユーザー入力を使った条件分岐

ユーザー入力を使って、処理を分岐させるスクリプトを作成します。

set /P choice=続行しますか? (Y/N): 
if /I "%choice%"=="Y" (
    echo 処理を続行します...
    REM ここに続行する処理を記述
) else (
    echo 処理を中止します。
    REM ここに中止する処理を記述
)

このスクリプトでは、ユーザーに「続行しますか?」と尋ね、入力に応じて処理を分岐します。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次