Windowsのバッチファイルで、ファイル名に日付や時刻を使いたいときがあります。 例えばバックアップのバックアップ先ファイル名です。ファイル名にバックアップ日時を入れるのは良くある話でしょう。
Perlなどのスクリプト言語を使えば簡単にできるのですが、バッチファイルだけでもできるので、やり方を紹介します。
使用するのは%date%と%time%という環境変数になります。
%date%には、以下の形式で日付が格納されています。
WindowsXPの場合
2007/03/18Windows2000の場合
日 2007/03/18
%timeには、以下の形式で日時が格納されています。 WindowsXP/2000の場合
20:47:31.03
%date%と%time%はWindows98SEでは使えませんでした。たぶんWindows2000以降専用だと思います。Vistaは分かりません。
これらの環境を使って、「backup-20070318-204731」という、「backup-YYYYMMDD-hhmmss」形式のファイル名を設定してみます。
まずは、以下のように日付と時刻を一旦テンポラリな変数dtとtmに設定します。
set dt=%date:~-10% set tm=%time: =0%日付の方は、WindowsXPと2000のフォーマットの違いを吸収するため、最後尾から10文字取り出しています。
%で囲まれた中にある「:」や「~」の意味については以下の記事を参考にして下さい。
「バッチ・ファイル中で日付をファイル名に使用する」
あとはdtとtmを使って以下のようにファイル名を設定します。
set fname=backup-%dt:~0,4%%dt:~5,2%%dt:~8,2%-%tm:~0,2%%tm:~3,2%%tm:~6,2%
以降はfnameをご自由にお使い下さい。
投稿者 MASATO : 2007年03月18日 21:35 | トラックバック%dt:~0,4%%dt:~5,2%%dt:~8,2% のところは %dt:/=% と書くと簡単ですよ。
%tm:~0,2%%tm:~3,2%%tm:~6,2% は
set tm=%tm:~0,6%
%tm::=%
と2行になってしまいますが。