回答:
コマンドプロンプトとバッチファイルでは、とを使用%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
更新:以下のコメントには、このコマンドに関する興味深いひねりと、回避できる潜在的な問題があります。
%DATE%
および%TIME%
ロケール認識しています!これは、ヨーロッパのマシンではを取得することを意味しますDD.MM.YYYY
。ああ。
使用%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
set tmp=%tmp:x=y%
など
地域設定が何であれ、適切な日付を取得する唯一の信頼できる方法は、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