バッチファイル中で日付を使う方法

| | コメント(4) | トラックバック(0)

いくつか方法があったので、まとめてみます。

DATETIME コマンド (渋木宏明(ひどり)さん作)

・DATETIME - 指定された書式で現在の日付と時刻を表示 (渋木宏明(ひどり) blog)
http://blogs.users.gr.jp/hidori/articles/DATETIME.aspx
・DATETIME コマンド利用ガイド (渋木宏明(ひどり) blog)
http://blogs.users.gr.jp/hidori/articles/1794.aspx

2004/08/04現在、公開されていないようです。(zipファイルリンク先が404)
# けんさんのコメントより(thanks)

指定したフォーマットで日付を返します

C:\> datetime YMMDD
20040410
C:\> datetime YYMMDD
040410
C:\> datetime Y-MM-DD
2004-04-10
C:\> datetime YMDhms
200441011440
C:\> datetime YYMMDD-hhmmss
040410-114422
C:\> datetime D O, Y
10 April, 2004
C:\> datetime D O, Y E
10 April, 2004 Saturday

「memo-日付.txt」というファイル名でメモ帳を開くバッチファイルは以下の様にするそうです。

FOR /F %%I IN ('DATETIME YMMDD') DO NOTEPAD memo-%%I.txt

環境変数「%DATE%」「%TIME%」

いつの間にこの環境変数にセットしてるんでしょう?
OS毎に取得できるフォーマットが違うみたいなので、フォーマットをそろえるには各OS毎に置換する必要があります。

# Windwos 2000
C:\> echo %DATE%
日 2004/03/21
C:\> echo %TIME%
 8:59:12.01
C:\> echo %TIME: =0%
08:59:12.01
# WindowsXP
# Windows 2003
C:\> echo %DATE%
2004/03/21

SEE:
イベントログを監視する (このblogより)
日付のフォーマットを変更(環境変数の置換やsubstring)する方法について少し書いてあります。

(2004/05/03 追記 ここから)
・@IT:Windows TIPS -- Tips:バッチ・ファイル中で日付をファイル名に使用する
http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html
環境変数「%TIME%」についても触れていました。
substringする方法が詳しく書かれていました。

詳細は「set /?」を参照すること。

C:\> set /?

(2004/05/03 追記 ここまで)

dateコマンド、timeコマンド (2004/05/29 追記)

基本的には現在の日付、時刻を設定するコマンド。
コマンド拡張機能を有効にして/T オプションをつけると、現在の日付、時刻を表示します。

# 日付 (Windows2000)
C:\> date /T
2004/05/29 土
# 日付 (WindowsXP)
C:\> date /T
2004/05/29
 
# 時間
C:\> time /T
19:22

コマンド拡張機能を有効にするには、レジストリエディタで以下の様に設定します。

キー名 : HKEY_CURRENT_USER\Software\Microsoft\Command Processor
値の名前 : EnableExtensions
値のデータ : 「1」=有効、「0」=無効

変えた記憶はないからデフォルトで有効なのかもしれない。
WindowsXPでは、デフォルトで1になってるらしい。

now.exe (Windows リソースキット)

日付のフォーマットは指定できません。
指定したメッセージを表示できます。

C:\> now
Sat Apr 10 12:00:24 2004
C:\> now this is test
Sat Apr 10 12:00:29 2004 -- this is test

コメントを付ける事はできるけど、日付のフォーマットが決まっているので、ちょっと使いにくいかも。
ログファイル内に日付を書き込むときに使うのがいいのかもしれない。

良い使い方はないかなぁ? (2004/05/29 追記)

日付、時間を標準出力するだけじゃなくて、ファイル名に使うには、ひどりさんの「FOR 〜 IN 〜 DO」文を使うか、%DATE%、%TIME%環境変数を使う感じかな。
標準出力を環境変数にセットするには「FOR 〜 IN 〜 DO」文を使うのが一般的なのかな。
いい方法があったら、教えてください。

トラックバック(0)

このブログ記事を参照しているブログ一覧: バッチファイル中で日付を使う方法

このブログ記事に対するトラックバックURL: http://kinshachi.ddo.jp/mt/mt-tb.cgi/255

コメント(4)

けん :

dateやtimeコマンドの結果を使ってディレクトリやファイルの名称にしたバッチファイル作ったら、timeコマンドは02:00:00.00とならずに、2:00:00.00と表示されるので、02:00:00.00を作るだけのためにfor文使う羽目に(T-T

DATETIMEコマンドは今は配布していないみたいですね。

ike :

けんさん。
本当だ、DATETIMEコマンドのリンク先が404ですね。
ありがとうございます。

%TIME%を使ってるのかしら?
ちょっとやってみたら先頭にスペースが入るみたいなので、

#スペースを0に置換
c:\> echo %TIME: =0%

とかするとどうでしょう?
本文に少し追加してみました。

今、「set /?」を見ていたら、「echo %CD%」でカレントパスを表示できるんですね。知らなかった〜。

けん :

素敵ですm(_ _)m>スペースを0に置換
いやぁ、奥が深いなぁ。

ike :

けんさん。
昔(MS-DOS時代とか)はなかった機能が知らないうちに追加されてたりしますよねー。それとも、知らなかっただけなのかしらん?

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、ikeが2004年4月10日 12:29に書いたブログ記事です。

ひとつ前のブログ記事は「役立つ、覚えておくと便利なSQL」です。

次のブログ記事は「Visual Studio 6.0 Service Pack 6」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近のコメント

On バッチファイル中で日付を使う方法
  • ike: けんさん。 昔(MS-DOS時代とか)は
  • けん: 素敵ですm(_ _)m>スペースを0に置
  • ike: けんさん。 本当だ、DATETIMEコマ
  • けん: dateやtimeコマンドの結果を使って
Powered by Movable Type 4.261