2011-09-22 58 views
1

我正在嘗試編寫一個快速批處理腳本來查看一個文件的最後修改日期,並將其與其他幾個修改日期進行比較,如果它大於其他修改日期lastmods,它將文件複製到這些目錄。這是我到目前爲止:上次修改Windows批處理腳本副本文件

@echo off 
for %%a in ([srcFile]) do set lastmodSrc=%%~ta 
echo lastmodSrc 
for %%a in ([dstFile1]) do set lastmodDst1=%%~ta 
for %%a in ([dstFile2]) do set lastmodDst2=%%~ta 
for %%a in ([dstFile3]) do set lastmodDst3=%%~ta 
for %%a in ([dstFile4]) do set lastmodDst4=%%~ta 

if lastmodSrc GTR lastmodDst1 xcopy [srcFile] [dstDir1] /-y 
if lastmodSrc GTR lastmodDst2 xcopy [srcFile] [dstDir2] /-y 
if lastmodSrc GTR lastmodDst3 xcopy [srcFile] [dstDir3] /-y 
if lastmodSrc GTR lastmodDst4 xcopy [srcFile] [dstDir4] /-y 

pause 

方括號是完整的路徑名稱。它現在正在做的是將lastmodSrc和lastmodDst保存爲字符串(至少它看起來就是它的作用),所以它實際上並不檢查mod日期。在Windows的批處理腳本編寫中,我非常不足,想到這裏某個人可能會提供幫助。提前致謝!

回答

1

另一種可能更簡單的方法(假設我理解了目標)將是在xcopy上使用/d選項。如果給出了(沒有日期),它只會在源文件較新的情況下複製文件:

xcopy /d srcfile dstfile 
+0

你擊敗了我50秒。 – Benoit

+0

這通常不是我的字面意思,但我只是做了。不敢相信我沒有想到這一點。非常感謝! – antinescience

+0

@Dancho:我很高興它的工作。我忽略了這個顯而易見的解決方案,而不是我所關心的。 –