3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(バッチ)日付や時間をファイル名にしたい

バッチファイルで処理結果などをファイルに保存するときに、日付や時間を入れたい時があります。

%date% や %time% を使うと / や : などファイル名として使用できない文字まで出力されちゃうんですよね。

その場合、環境変数から一部の文字を取り出したり、置換すればいいようです。

文字列の抜き出しや切り取りは何文字目から何文字分みたいな感じで指定できるようです。

詳しい書式はバッチ・ファイル中で日付をファイル名に使用する - @ITが参考になります。

まず日付ですが、%date% でファイル名に使えない文字を出力しないようにしたいので、それらの文字を空文字に置換します。

set date2=%date:/=%

echo test > d:\%date2%.txt

これで / が空文字になり、date2環境変数に入ってファイルパスに使うことで日付のファイルを作成できます。

次に時刻ですが、これはちょっと面倒です。

値がひとけたの時は空白になってしまうのと、ミリ秒まで値が入ってしまうことです。

とりあえず、置換で:を削除し、空白を0に置換、そして、0から6文字目まで対象にするという方法にしました。

set date2=%date:/=%

set time2=%time: =0%

set time2=%time2::=%

set time2=%time2:~0,6%

echo test > d:\%time2%.txt

参考:

バッチファイルで今日の日付 (YYYYMMDD 形式) を取得 - アジャイルプログラマの日常