如何编写批处理文件来复制和重命名最近日期的文件?

时间:2010-06-17 16:14:27

标签: batch-file

我正在尝试编写批处理文件,只将给定文件夹中最近日期的文件复制到本地计算机上的另一个目录,同时将其重命名为。

我在这里找到了一个非常相似的问题

How do I write a Windows batch script to copy the newest file from a directory?

并且已经设法将其他论坛中的以下代码拼凑在一起,但是它已经碰壁,因为它只会导致批处理文件本身被复制到目标文件夹。对我来说,批处理文件本身所在的位置无关紧要。

源文件夹是C:! BATCH和目标文件夹是C:\ DROP

代码在下面,如果这是一个非常明显的答案而道歉,但它确实是第一次尝试为我编写批处理文件...谢谢!

@echo off

setLocal EnableDelayedExpansion

pushd C:\! BATCH

for /f "tokens=* delims= " %%G in ('dir/b/od') do (set newest=%%G)

copy "!newest!" C:\DROP\

PAUSE

2 个答案:

答案 0 :(得分:0)

尝试在pushd命令上方移动setLocal命令。

我猜是“!” character对延迟扩展具有特殊含义,因此在打开延迟扩展后,您可能无法将其用作路径名的一部分。

如果你真的不需要它,你也可以从路径中删除感叹号,这可能会更容易。

答案 1 :(得分:0)

我认为这个小mod可以让你的脚本做你想做的事情

 @echo on
 setLocal DisableDelayedExpansion
 pushd "C:\! BATCH"
 setLocal EnableDelayedExpansion

 for /f "tokens=* delims= " %%G in ('dir/b/od') do (set newest=%%G)

 copy %newest% C:\DROP\newname.txt

 PAUSE
 POPD

newname.txt ...是新名称:)