KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

Windowsバッチ処理(ファイル読み込み、分岐処理)

登録日 :2024/01/19 06:35
カテゴリ :Windowsバッチ

Windowsバッチにて、以下の処理を行う

  • テキストファイルを1行ずつ読み込む
  • 読み込んだ文字列を、if文で条件比較して、Trueならば、ある別の処理を実行する
  • テキストファイルの読み込みは、1行ずつループで終端まで実行する。
  • 条件分岐して、それぞれ別のバッチ処理を実行する。
  • Windowsのタスクスケジューラで実行する

ファイルの読み込み部

@echo off
setlocal enabledelayedexpansion

set "inputFile=path\to\your\file.txt"

for /f "tokens=* delims=" %%a in (%inputFile%) do (
    set "line=%%a"
    if !line! == "your_condition" (
        rem Trueの場合の処理をここに追加
        echo !line! is True
    ) else (
        rem Trueでない場合の処理をここに追加
        echo !line! is False
    )
)

endlocal

別のバッチ処理を読み込むには、callを使う

@echo off

rem 何か処理

rem 別のバッチスクリプトの呼び出し絶対パスを使用
call C:\Path\To\Your\Script.bat

rem 何か処理

exit /b

ログをテキストに出力する

@echo off

rem 何か処理

rem 出力したい文字列
set "logMessage=実行が正常に終了しました。"

rem ログファイルへのパス
set "logFile=C:\Path\To\Your\Log\logfile.txt"

rem テキストファイルに文字列を追記
echo %logMessage% >> %logFile%

rem 何か処理

exit /b

プログラム実行時の日時を取得する

@echo off
setlocal enabledelayedexpansion

rem 実行時の日付を取得ロケールに依存する可能性がある
set "currentDate=%DATE%"

rem 日付のフォーマットを変更
for /f "tokens=2-4 delims=/ " %%a in ("!currentDate!") do (
    set "formattedDate=%%c-%%a-%%b"
)

echo 現在の日付: !formattedDate!

endlocal