ファイル名の現在の日付


15

データベースをダンプするバックアップスクリプトをスケジュールしました。ファイル名に日付のタイムスタンプを追加するにはどうすればよいですか?

私はWindowsとCMDについて話している。

回答:


21

コマンドプロンプトとバッチファイルでは、とを使用%date%%time%て、それぞれ日付と時刻を返すことができます。日付は正常に機能しますが、返される時間値にはコロンが含まれます。コロンはファイル名での使用は違法ですが、それらを削除する方法があります。

次のようなものを使用します。

COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt

これにより、次のようなファイル名が生成されます。 file_172215_01062009.txt

更新:以下のコメントには、このコマンドに関する興味深いひねりと、回避できる潜在的な問題があります。


3
素晴らしい小さなヒント。ところで、逆にそれを行うと、つまり「file_20090601_172215」の場合、アルファベット順のリストに正しい順序でファイルが表示されます。

5
%time :: =%を使用してコロンを削除することもできます。
user1686 09年

2
システムロケールがスクリプトのテスト時と異なるとすぐに、日付の部分文字列が壊れると思いますか?日付表示形式の設定が異なるため、テストユーザーでも機能し、スクリプトランナーとして機能しなくなる可能性があります。
Oskar Duveborn 09年

3
時間0-9に注意してください!CMDは、時間の最初の文字を0ではなく<SPACE>に設定します。上記のCOPYコマンドは、宛先ファイル名を引用符で囲まないと問題が発生します。
エヴァンアンダーソン

2
なお、%DATE%および%TIME%ロケール認識しています!これは、ヨーロッパのマシンではを取得することを意味しますDD.MM.YYYY。ああ。
ペッカ

14

使用%DATE%および/または%TIME必要に応じて使用して、ファイル名に使用できない文字置き換えて、環境変数を%name:from=to%%TIME::=%すべてのコロンを削除するだろうが)。

理論»エコー%date%
2009-06-01

理論»エコー%time%
16:30:41,46

理論»echo%time :: =%
163052,17

理論»echo%time :: =、%
16,30,58,68

理論»echo backup-%date%-%time :: =-%。zip
backup-2009-06-01-16-31-18,82.zip

1
うわー、:x = yトリックについては決して知らない。かっこいい。
ユージンカッツ

1
+1の:=トリック、iv'eはMS-Dos 1からこのゲームに参加しており、Iv'eがそのゲームを見たのは初めてです。複数の文字も変更できればさらに良いでしょう!:-)
ショーティ

まあ、それは、Windows NTシリーズでのCmd.exeに追加されました...そして、あなたは複数の変更を行いたい場合は、ちょうどのチェーン持っているset tmp=%tmp:x=y%など
user1686

%DATE%のコンテンツ(フィールドの数、コンテンツ、および順序)はロケール固有です。
symcbean

4

地域設定が何であれ、適切な日付を取得する唯一の信頼できる方法は、foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-scriptからのソリューションです

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause

1

ファイル名に%DATE%変数を使用します。

%TIME%変数もありますが、ファイル名に使用できない文字が含まれています。

以下は、作成したファイルの名前に日付と時刻が含まれる新しいファイルにテキスト行を書き込む例です。

echo "testfile" >> backup-%DATE%.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.