最后修改了Windows批处理脚本副本文件

时间:2011-09-22 15:51:12

标签: windows batch-file last-modified

我正在尝试编写一个快速批处理脚本来查看一个文件的上次修改日期,并将其与其他几个文件的最后修改日期进行比较,如果它比其他lastmod更大,则会将文件复制到那些目录。这就是我到目前为止所做的:

@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 个答案:

答案 0 :(得分:1)

另一种可能更简单的方法(假设我理解目标)是在xcopy上使用/d选项。如果给出了(没有日期),它将仅在源更新时复制文件:

xcopy /d srcfile dstfile