2015-11-04 45 views
0

我试图编写一个脚本,将修改过的文件从我的开发环境复制到桌面文件夹,但它复制了所有文件,而不仅仅是修改后的文件。这是脚本:用于复制已修改文件的Windows脚本

set codeFolder=C:\Dev\tsg-bto-apps-lt-pc-trunk 

FOR /F "TOKENS=1 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET dayOfWeek=%%A 
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET dd=%%B 
FOR /F "TOKENS=1,2,3 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%C 
FOR /F "TOKENS=1,2,3,4 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET yyyy=%%D 

SET today=%dd%-%mm%-%yyyy% 

Xcopy /Y /D:%today% /I %codeFolder%\bin C:\Users\sheaffer\Desktop\testFolder 

的方法如下:

  1. 获取今天的日期(我用的是出现在下面的链接第二个答案的方法:Windows batch: formatted date into variable)。

  2. 使用的Xcopy与/ d标志(有下面的链接的示例:http://www.windows-commandline.com/xcopy-command-syntax-examples/

我看不到我在做什么错。结果是我的bin文件夹中的所有文件都被复制了,而不仅仅是今天修改的文件。当我运行我的脚本,所产生的命令是:

Xcopy /Y /D:04-11-15 /I C:\Dev\tsg-bto-apps-lt-pc-trunk\bin C:\Users\sheaffer\Desktop\testFolder

请帮助我了解我的错误。谢谢。

+1

如果你不坚持使用xcopy,我建议使用robocopy。 – Filburt

+0

@Filburt谢谢。我接受了您的建议,并使用robocopy重写了脚本。它可以工作,并且新脚本更简单,因为我可以使用'/ maxage:1'并避免字符串/日期操作。我仍然好奇为什么我发布的脚本不起作用。 – Roy

回答

0

xcopy的帮助表示/ D日期格式为m-d-y,并且您的日期格式为d-m-y。您要求复制2015年4月11日或之后更改的所有文件。另外,robocopy比xcopy更好。真正漫长的路径名称绊倒xcopy

0

我采取了Filburt的建议,并使用了robocopy而不是xcopy,它可以工作。新脚本比较简单,因为我可以使用/maxage:1并避免字符串/日期操作。

set codeFolder=C:\Dev\tsg-bto-apps-lt-pc-trunk 

robocopy %codeFolder%\bin C:\Users\sheaffer\Desktop\testFolder /MAXAGE:1 
相关问题