【bat】バッチファイルで外部ファイルのフラグを読み込んで処理を分岐する方法

バッチファイルを使用して外部ファイルからフラグを読み込み、そのフラグの値に基づいて処理を分岐させる方法について詳しく解説します。さらに、フラグが特定の値(例えば、1)になるまで待機する方法についても説明します。

フラグの読み込みと処理の分岐

まずは、外部ファイル(例えば flag.txt)からフラグを読み込み、そのフラグの値に基づいて処理を分岐する方法を紹介します。

外部ファイル flag.txt の内容

flag=1

バッチファイルのコード例

@echo off
setlocal

REM flag.txt からフラグを読み込む
for /f "tokens=1,2 delims==" %%i in (flag.txt) do (
    if "%%i"=="flag" set FLAG=%%j
)

REM フラグの値に基づいて処理を分岐する
if "%FLAG%"=="1" (
    echo フラグが1です。処理Aを実行します。
    REM 処理Aのコマンドをここに書く
) else if "%FLAG%"=="0" (
    echo フラグが0です。処理Bを実行します。
    REM 処理Bのコマンドをここに書く
) else (
    echo フラグが不明です。デフォルトの処理を実行します。
    REM デフォルトの処理のコマンドをここに書く
)

endlocal

このコードでは、flag.txt からフラグの値を読み取り、その値に基づいて異なる処理を実行します。

フラグが1になるまで待機する方法

次に、フラグが1になるまでループで待機し続ける方法を説明します。一定時間待機しながらフラグをチェックし、フラグが1になったら処理を進めます。

@echo off
setlocal

:check_flag
REM flag.txt からフラグを読み込む
for /f "tokens=1,2 delims==" %%i in (flag.txt) do (
    if "%%i"=="flag" set FLAG=%%j
)

REM フラグが1かどうかをチェックする
if "%FLAG%"=="1" (
    echo フラグが1になりました。処理を実行します。
    REM フラグが1のときに実行する処理をここに書く
    goto end
) else (
    echo フラグはまだ1ではありません。5秒後に再チェックします。
    REM 5秒待機
    timeout /t 5 /nobreak >nul
    goto check_flag
)

:end
echo 処理が完了しました。
endlocal

このコードでは、フラグが1になるまで timeout コマンドで5秒待機し、その後再度フラグをチェックします。フラグが1になった時点で処理を実行します。

まとめ

バッチファイルを使用することで、外部ファイルからフラグを読み込んで処理を分岐させたり、特定の条件が満たされるまで待機したりすることが簡単にできます。上記のコード例を参考に、自分のニーズに合わせてバッチファイルをカスタマイズしてみてください。