DATE_ADD.cmd 所定書式の日付に対する加算(減算)処理
Windows 7 | コマンドプロンプト | PRFM_TOOLS 1.0.0 - | DATE_ADD |
1.コマンドプロンプトで日付の計算はできないのか!?
1−1.例えば、前日日付のフォルダや1時間前のログファイルといった具合・・・
Windowsのコマンドプロンプトで日付の計算ができればと思うことがたまにあります。例えば「ログファイルを移動したい場合に前日日付のフォルダを作成したい」だとか、「1時間前のログファイルを対象にしたい」だとかいう場合です。コマンドプロンプトには、現在の年月日が格納された %DATE% 、 現在の時分秒(ミリ秒)が格納された %TIME% という変数がありますが日付を計算する様な機能はなく、こういった目的を実現するためには VBScript など WSH での実装が必要となり、若干敷居が高くなります。
2.Windowsコマンドプロンプトで日付計算するツール作りました。
DATE_ADD.cmd
そこで Windowsコマンドプロンプトから呼び出せる日付計算のツールを作成しました。 "DATE_ADD.cmd" 当サイトで配布している ユーティリティ群(PRFM_TOOLS) に収録しています。左記ページのリンクからダウンロードして解凍すれば利用できます。
年・月・日・時・分・秒からミリ秒まで個別に加算値を指定可能
YYYY/MM/DD hh:nn:ss.SSS形式で日付として認識できる文字列に対して、1年足すとか、1分足すとか、1時間30分20秒足すとか柔軟な単位で加算できます。日付書式の年月日時分秒部分は VBScript の CDate関数で認識できる範囲、ミリ秒は一般的な3桁のミリ秒のほか コマンドプロンプトで ECHO %TIME% とタイプした時にみられる 2桁精度のミリ秒にも対応しています。
ツール内部では、受け取った日付文字列に対して上記の日付解析を行った後に VBScript の DateAdd関数を使用して演算を行うため、桁の繰り上げはもちろん、減算にも対応しています。演算結果は引数で指定した変数に格納されるので利用も簡単です。
コマンドの仕様は別途解説しますが、ここで簡単に使用例を紹介します。Cドライブの直下に先に紹介したツール「PRFM_TOOLS」を配置したとして以下のコマンドで使用します。ツールは絶対パス指定でも相対パス指定でも使用できます。結果を SAMPLE という名前の変数に設定する例です。
: %DATE% %TIME% も受け取れます。その他引数を省略すれば加算なしで書式調整用途にも使えます。
C:\>C:\PRFM_TOOLS\DATE\DATE_ADD.cmd SAMPLE "%DATE% %TIME%"
変換対象値:2012/09/25 5:34:42.89
変換結果 :2012/09/25 05:34:42.89
C:\>ECHO %SAMPLE%
2012/09/25 05:34:42.89
: 2012/9/25 5:33:22 に 1年足す場合
C:\>C:\PRFM_TOOLS\DATE\DATE_ADD.cmd SAMPLE "2012/9/25 5:33:22" 1
変換対象値:2012/9/25 5:33:22
変換結果 :2013/09/25 05:33:22
: 2012/9/25 5:33:22 に 7日と10分を足す場合
C:\>C:\PRFM_TOOLS\DATE\DATE_ADD.cmd SAMPLE "2012/9/25 5:33:22" 0 0 5 0 10
変換対象値:2012/9/25 5:33:22
変換結果 :2012/10/02 05:43:22
: 「11ヶ月引く」といった減算も可能
C:\>C:\PRFM_TOOLS\DATE\DATE_ADD.cmd SAMPLE "2012/9/25 5:33:22" 0 -11
変換対象値:2012/9/25 5:33:22
変換結果 :2011/10/25 05:33:22
: 年月日から時分秒まで全ての型精度で足し算する場合は以下
C:\>C:\PRFM_TOOLS\DATE\DATE_ADD.cmd SAMPLE "1111/1/1 1:1:1.111" 1 2 3 4 5 6 7
変換対象値:1111/1/1 1:1:1.111
変換結果 :1112/03/04 05:06:07.118
上記の様にコマンドプロンプトとは思えない柔軟性(実際、裏では VBScript ですので VBScript の柔軟性)で日付計算が行えます。「DATE_ADD.cmd」の仕様について次ページ以降(執筆予定)で説明していきます。