web-dev-qa-db-ja.com

ファイル名の現在の日付

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

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

15
Bogdan Gusiev

コマンドプロンプトおよびバッチファイルでは、%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などのファイル名が生成されます

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

21
aalaap

%DATE%または%TIME環境変数を使用し、オプションで%name:from=to%を使用して、ファイル名で許可されていない文字を置き換えます(%TIME::=%はすべてのコロンを削除します)。

理論"echo%date%
 2009-06-01 
 
理論"echo%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 
14
user1686

地域設定が何であれ、適切な日付を取得する唯一の信頼できる方法は、foxidrive @ https://stackoverflow.com/questions/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
4
Eric Ouellet

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

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

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

echo "testfile" >> backup-%DATE%.txt
1
Frode Lillerud