2017-03-13 114 views
0

美好的一天,使用批处理文件修改日期重命名文件

我很可能是新建批处理文件。我的目标是将文件从源文件复制到目标文件夹,并在修改日期后将文件重命名为目标文件夹。我已经退出获取修改日期的挑战。它用CURRENT DATE显示或重命名文件,而不是修改日期。这是我送给你的参考代码:

@echo off 
setLocal EnableDelayedExpansion 
::set tDate=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2% 
set tDate=%date:~7,2%-%date:~4,2%-%date:~10,4% 
set source="C:\Source Folder" 
set target=%userprofile%\Desktop\backup 
for %%i in (%source%\AL*.*) do (
::set myfiledate=%%~ta 
copy "%%i" "%target%\%tDate%_%%~nxi" 
) 

我真的很感谢你对此事的输入

感谢

+0

因此,您从当前日期开始设置'tdate',然后扫描目录并使用'tdate'复制文件,因此毫不奇怪目标文件的当前日期是其名称的一部分。在代码块中使用':: comment'是一种不好的做法 - 这是一个破碎的标签,可能会导致意外的结果。 – Magoo

+0

感谢您的输入。我会考虑那个评论。所以我如何提取修改日期并将其附加到文件名上。 – Djspooch

+0

阅读'for'的帮助(在'commad提示符窗口中输入'for /?',特别是'〜'修饰符的部分;你会发现有一种方法可以获得最后的修改日期;请注意,这会以与区域相关的方式返回日期,就像'%DATE%'和'%TIME%'变量一样...... – aschipfl

回答

0
... 
for %%i in (%source%\AL*.*) do (
set myfiledate=%%~ti 
ECHO(copy "%%i" "%target%\!myfiledate:~0,2!!myfiledate:~5,2!!myfiledate:~6,4!_%%~nxi" 
) 

我假设你想在新文件中的日期格式aabbyyyy,但我建议你使用YYYYMMDD来简化排序。

我也建议你echo开始荷兰国际集团的复制命令,以确保它是正确的(如上图所示) - 只是删除echo(实际副本。

根据您的设置和要求,可能需要更改三个连接日期元素!myfiledate:~x,y!的顺序。他们应该提取年,月和日。

+0

感谢您的回复。我试过了代码,它做了复制,但修改后的日期没有显示在文件名上。从这个到这个文件名: 13-03-2017_AL&PP(3)到_AL&PP(3) – Djspooch

+0

我只是复制你的代码并删除了'::'注释。元变量'%% i'正在被使用,它必须与赋值中使用的元变量相匹配。 – Magoo

+0

我只是复制你的代码,并删除'::'注释。元变量'%% i'正在被使用,它必须与赋值中使用的元变量相匹配。 – Magoo