我正在尝试编写批处理文件,只将给定文件夹中最近日期的文件复制到本地计算机上的另一个目录,同时将其重命名为。
我在这里找到了一个非常相似的问题
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
答案 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 ...是新名称:)