- ベストアンサー
動的に日時を取得しファイル名に付加する方法。
コマンドプロンプトで、 >XCOPY C:\documents D:\documents >xcopy-2006-11-13-0912.log のようなログを出力しています。この「2006-11-13-0912」の部分を動的に現在の日時から取得したいのです。 どのようにしたらよいでしょうか。サイトのURLでも結構です。どうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
バッチファイルでも出来るかも知れませんが、記述がわかり難くくなるのが嫌なので、私は vbs(WSH) でやってます。 テキストファイルに下記スクリプトを記述し、拡張子を vbs とします。 そのスクリプトファイルをダブルクリックで実行できます。コマンドプロンプトからは拡張子なしで実行できます。PATH が通っていればファイル名だけでOKです。 日付,時間の文字列生成は「地域と言語のオプション」の設定に影響されますので、お気を付け下さい。 この例では "ファイル名_061231_235959.log" となります。 ご都合の良いようにアレンジして下さい。 Dim oFS, oSH Dim cNow, ddd Set oFS = WScript.CreateObject( "Scripting.FileSystemObject" ) Set oSH = CreateObject("WScript.Shell") '-------- 日時 文字列 -------- cNow = Date & Right( " 0" & Time , 9 ) ddd = "_" & mid(cNow,3,2) & mid(cNow,6,2) & mid(cNow,9,2) & "_" & mid(cNow,12,2) & mid(cNow,15,2) & mid(cNow,18,2) '------- バックアップ -------- oFS.CopyFile "C:\~\ファイル名.xxx" , "D:\~\ファイル名" & ddd & ".log"
その他の回答 (3)
No.2の回答者です。 参考URLを付け忘れていたので補足しておきます。 お礼を見て今一度読んでみましたが、やはりバージョンにより少し異なるようです。 こちらにはWindows2000Proしかない為、検証結果をフィードバックして下さるとありがたいです。
お礼
度々どうもありがとうございます。 遅くなりまして申し訳ありません。 XPで動作しなかったのは、地域と日付の設定の問題だけだったようです。 私のXP環境では、 >echo %date% の結果が 11/28/2006 Tue でしたので、 xcopy-%DATE:~6,4%-%DATE:~0,2%-%DATE:~3,2%-%TIME:~0,2%%TIME:~3,2%.log としなければいけませんでした。基本的な事でしたね、すみません。どうもありがとうございます。
環境変数(%DATE%や%TIME%)を使用するのがいいと思います。 OSのバージョンによるかも知れませんが xcopy-2006-11-13-0912.log を以下の様に書けばいけると思います。 xcopy-%DATE:~-10,4%-%DATE:~-5,2%-%DATE:~-2,2%-%TIME:~0,2%%TIME:~3,2%.log
お礼
どうもありがとうございます。当方の環境でテストしたところ、英語XPSP2では動かなかったのですが、英語Win2000SP4では問題なく動きました。XPの方でも色々試してみたいと思います。ありがとうございました。
- 2HB291X
- ベストアンサー率83% (30/36)
dateコマンドとtimeコマンドから必要な値だけ取り出してつなげてあげればよいと思います。 forやsetコマンドとそれぞれのコマンドで実現可能です。 googleなどで検索しても比較的簡単に見つかると思うので調べてみてはいかがですか。
お礼
どうもありがとうございます。forとsetとは思いつきませんでした。
お礼
どうもありがとうございます。今回の件でvbsをしっかり学んでみたくなりました。スクリプト、参考にさせていただきます。