XCOPY带有模式匹配

4

我对Windows批处理脚本非常陌生,如果这是一个愚蠢的问题,请忽略。我的要求是只有在源文件修改时间在特定日期之后,才将一组文件从源位置复制到目标位置。我已经使用XCOPY命令完成了这个需求。

XCOPY C:\Src\*.txt C:\Target /D /S /Y

这段代码第一次运行时很好,但是有一个问题,一旦目标文件夹中的文件被处理后,它将被重命名为其他名称和扩展名,所以下一次我的脚本运行时,它在目标文件夹中找不到与源文件同名的文件,因为它已经被处理并重命名。那么,在XCOPY或任何其他Windows命令中是否有一种方式来匹配目标文件夹中的文件名模式,如果找到匹配项,则继续进行日期时间检查和复制,否则忽略?
示例源目录文件:
a.txt
b.txt
c.txt

第一次运行脚本后的目标目录文件:

a.txt
b.txt
c.txt

处理后和第二次运行脚本之前的目标目录文件:

a_201603071130.ok
b_201603071130.ok
c_201603071130.ok

对于使用 XCOPY 的脚本的第二次运行,它无法在目标地找到文件 a.txt,因为它已经被处理过了,但要求仅在上次运行后修改了 a.txt 文件时才进行复制。
我可以通过存储上次运行时间并在下一次运行时进行检查来实现此操作,但我想找出是否有其他方法可以做到这一点。

你是在运行这个程序在MS-DOS下,一个早已过时的16位操作系统,还是在Windows下使用Windows命令提示符? - Ross Ridge
使用Windows计划任务作为DOS脚本运行此程序。 - Pramod
这意味着你正在Windows命令提示符下运行它作为Windows批处理文件,而实际上你并没有使用MS-DOS(或DOS)。 - Ross Ridge
我不明白为什么你需要这样做,如果你只是要用一个更新的版本覆盖它,为什么要重命名文件呢?即使它被重命名了,它也会发现文件不存在并复制一组新文件。 - Mocking
该文件将由第三方应用程序进行处理并重命名,我无法控制。 - Pramod
1个回答

3
XCOPY C:\Src\*.txt C:\Target /D /S /Y /M
< p > /M 开关可以更改文件的 A 标志。


如何为目录匹配模式...这个模式适用于文件。 - Gaurav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接