上次修改的Windows批处理脚本复制文件

上次修改的Windows批处理脚本复制文件,windows,batch-file,last-modified,Windows,Batch File,Last Modified,我正在尝试编写一个快速批处理脚本,查看一个文件的上次修改日期,并将其与其他几个文件的上次修改日期进行比较,如果它大于其他lastmods,它会将文件复制到这些目录中。这就是我到目前为止所做的: @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

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

@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中的批处理脚本编写方面严重不足,我想这里可能有人能提供帮助。提前谢谢

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

xcopy /d srcfile dstfile

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

xcopy /d srcfile dstfile

我不经常直面手掌,但我就是这么做了。真不敢相信我居然没想到。非常感谢@丹乔:我很高兴它成功了。我忽略了这个显而易见的解决方案的次数比我愿意承认的要多。我不是经常直面手掌,但我就是这么做了。真不敢相信我居然没想到。非常感谢@丹乔:我很高兴它成功了。我忽略了这个显而易见的解决方案的次数超过了我愿意承认的次数。