概要
バッチ処理を実行した日付を、出力したファイル名に付与する際の記述方法になります。
普段からWindowsサーバの管理で定期的にルーティング情報を取得しているのですが
サーバごとに取得する日が異なり、都度コマンドを実行するのも面倒なので、
バッチファイルを予め準備しておき、作業効率化を図っています。
纏まっている構文が上手く見つけられなかったので、自身の備忘録も兼ねて記事化しました。
構文例
@echo off
echo %date%
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
ipconfig /all > %yyyy%%mm%%dd%_battest.log
route print > %yyyy%%mm%%dd%_battest.log
pause
構文解説
@echo off
echo %date%
⇒最初に今日の日付を表示する
出力結果:2025/01/27
set yyyy=%date:~0,4%
⇒「yyyy」の変数を用意し、その中に先頭から4文字分が格納される
出力結果「2025/01/27」の「2025」が変数「yyyy」へ格納される
set mm=%date:~5,2%
⇒「mm」の変数を用意し、その中に先頭より6文字目から2文字分が格納される
出力結果「2025/01/27」の「01」が変数「mm」へ格納される
※出力結果に「/」が含まれている為、6文字目からのカウントとなる
set dd=%date:~8,2%
⇒「dd」の変数を用意し、その中に先頭より8文字目から2文字分が格納される
出力結果「2025/01/27」 の「27」が変数「dd」へ格納される
※出力結果に「/」が含まれている為、8文字目からのカウントとなる
ipconfig /all > %yyyy%%mm%%dd%_battest.log
route print > %yyyy%%mm%%dd%_battest.log
⇒実行結果がファイルへ出力される
%yyyy%の部分は「2025」
%mm%の部分は「01」
%dd%の部分は「27」
なので、出力されるファイル名は「20250127_battest.log」となる。
pause