我已经开发了一个简单的批处理文件,我想将其设置为计划的任务以移动文件。
目前,这是我的代码;
move /-y "C:FolderFolderFolder*File*.csv" "C:FolderFolderFolderFolderFile.csv"
pause
但是,这显然会导致重复(以及第二次转移后的覆盖冲突)
如何附加日期(文件只会每天移动一次)或唯一的标识符来解决此问题?
谢谢
尝试
move /-y "C:FolderFolderFolder*File*.csv" "C:FolderFolderFolderFolderFile_%date:~6,4%_%date:~3,2%_%date:~0,2%.csv"
注意:上述命令中的数字6,4 3,2 0,2取决于您的日期格式。检查您的控制面板(或使用echo %date%
)是否是否有默认日期格式。当然,您可以更改订单: - )
我的默认日期格式为dd/mm/yyyy&此片段将其更改为yyyy_mm_dd
您可能可以做类似的事情以将日期时间添加到文件名...
for/f" tokens = 1-5 delims =/" %% d in("%date%")do iname" c: folder folder folder folder folder folder folder file.csv" %% e-%%f-%% g.csv
test-台式机上创建的test.txt ran .bat(更改了文件名和位置,以匹配我的测试文件的名称和位置。
我运行.bat后,文件名已更改为11-06-2012.txt。
希望这会有所帮助。
问题很简单,但解决方案在批处理中很难看。例如,上面列出的答案之一为我产生以下输出:
C:>echo %date:~6,4%_%date:~3,2%_%date:~0,2%
/08/_ 1_Th
显然,它并不总是有效。幸运的是,Rob van der Woude已经准备了这样的解决方案。该代码为我产生以下输出:
DateParsed=20121108
我已经复制了Rob的代码,并在此处引用了他的来源以易于使用。
:: One of the ugliest scripts required for such a seemingly simple thing is getting dates parsed
:: http://www.robvanderwoude.com/datetimentparse.php
SET Today=%Date: =0%
SET Year=%Today:~-4%
:: Include 1 extra character, which will be either a leading zero or a trailing separator
SET Month=%Today:~-10,3%
:: Remove separator
SET Month=%Month:-=%
SET Month=%Month:/=%
:: Clear leading zeroes
SET /A Month = 100%Month% %% 100
:: And add one again, if necessary
SET /A Month = 100 + %Month%
SET Month=%Month:~-2%
SET Day=%Today:~-7,2%
:: Remove separator
SET Day=%Day:-=%
SET Day=%Day:/=%
:: Clear leading zeroes, as there may be 2 leading zeroes
SET /A Day = 100%Day% %% 100
:: And add one again, if necessary
SET /A Day = 100 + %Day%
SET Day=%Day:~-2%
SET DateParsed=%year%%month%%day%
echo DateParsed=%DateParsed%