如何使用批处理脚本基于时间复制最新文件

时间:2016-06-20 17:41:01

标签: batch-file

我正在尝试根据时间复制最新的文件,我尝试了下面的脚本,但它复制的所有文件都不是最新的文件:

 FOR /F %%I IN ('DIR "%FILE1%\CC*.txt" /B /O:-D /s') DO COPY %%I C:\Hyp\New\

例如:

xyz1.txt -- 4:23
xyz2.txt -- 4:25
xyz3.txt -- 4:30

但我只需要复制最新的文件,即4:30,请帮助(不是所有文件)。

1 个答案:

答案 0 :(得分:1)

你很亲密。不是在FOR循环的bode内复制,而是将文件存储在变量(比如LATEST)中,每次迭代都会覆盖它。循环完成后,最新文件存储在变量中,假设您定义排序顺序,如/O:D(最先列出的最旧文件)。

这是固定的脚本:

FOR /F %%I IN ('DIR "%FILE1%\CC*.txt" /B /A:-D /T:W /O:D /S') DO SET "LATEST=%%~I"
COPY "%LATEST%" "C:\Hyp\New\"

我添加了过滤器/A:-D以便仅枚举文件(没有目录) 此外,我添加了/T选项,允许选择要使用的文件日期:状态W用于上次修改(默认),C用于创建,或A用于最后访问。