2015-11-04 41 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 
相關問題