it-swarm.cn

文件名中的当前日期

我已经安排了使数据库转储的备份脚本。如何将日期时间戳记添加到文件名?

我说的是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::=%会删除所有冒号)。

 theory"echo%date%
 2009-06-01 
 
 theory"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