2016-08-24 127 views
-1

我有一个bat文件,它执行以下操作。.bat文件xcopy文件仅基于具有时间戳的文件名

xcopy c:\folder\*.* d:\another_folder\. 
del *.xml 
del *.lst 

生成的文件在其名称中加入时间戳:

MY_FILE_11111_08-23-2016_111111.xml

格式为MM-DD-YYYY_HHMMSS

第三 _后的日期时间开始

如何编写bat命令,该命令仅在文件名具有今天的日期时才会复制?

+0

根据您的系统日期格式,它可以这么简单:'xcopy c:\ folder \ *%date:/ = - %* d:\ another_folder \ .' – wOxxOm

+0

您到目前为止尝试过什么?请分享你的努力!文件名中的日期/时间格式是否符合'date/T'和'time/T'命令返回的格式? – aschipfl

回答

0

有预定义的环境变量DATE它保存当前的本地日期格式由Windows区域设置定义。在命令提示窗口运行线

echo %DATE% 

在输出的情况下是08/23/2016(MM/DD/YYYY)只是各斜线必须在字符串中由连字符被替换为wOxxOm与一衬垫命令已经建议线。

set "FileDate=%DATE:/=-%" 
%SystemRoot%\System32\xcopy.exe "C:\Folder\*%FileDate%*" "D:\Another_Folder\" 

但是,如果输出例如Tue, 23/08/2016(与平日),或只是23/08/2016(没有平日),这将是这两个日期格式的例子当前日期字符串,必须重新格式化:

set "FileDate=%DATE:~-7,2%-%DATE:~-10,2%-%DATE:~-4%" 
%SystemRoot%\System32\xcopy.exe "C:\Folder\*%FileDate%*" "D:\Another_Folder\" 

怎样的角色在命令SET的帮助下解释了替换(第一种方法)分别串联的特定子串(第二种方法)的工作,可以通过打开命令提示符窗口并运行set /?help set来读取它。

如果只是一个单一的文件必须被复制,这是最可能足够使用Windows命令处理器,而不是标准的Windows控制台应用程序(外部命令)xcopy.exe的内部命令COPY。在命令提示符窗口copy /?xcopy /?中运行以显示这两个复制命令的帮助信息。