我在.bat
中有以下内容。我试图从网络驱动器中提取最新文件(因为每次生成新文件时文件名都会更改)并将其复制到桌面上的文件夹中更改名称,以便我可以从外部数据库中点击它。不幸的是,我对.bat
文件相对较新,无法弄清楚如何提取最新文件而不是下面定义的文件。我将把它转过来并将其放入任务调度程序中,每隔30分钟拉一次文件。
copy \\fipr01\SNAP\P161201135302673.tmp C:\Users\ddtacopy\Desktop\AutoCopy\SNAP.txt
答案 0 :(得分:1)
您可以使用dir
获取按年龄排序的文件列表,获取最新文件然后复制它:
pushd "\\fipr01\SNAP"
for /F "delims=" %%F in ('
dir /B /O:D /T:C "*.tmp"
') do (
set "NEWEST=%%F"
)
copy /Y "%NEWEST%" "C:\Users\ddtacopy\Desktop\AutoCopy\SNAP.txt"
popd
它是如何运作的?
pushd
创建一个临时驱动器号,指向给定的网络路径并更改为该路径;这样做是因为许多批处理命令不支持网络路径; dir /B /O:B /T:C
返回当前目录中的文件*.tmp
列表,最新项目为last; /T:C
告诉dir
按创建日期排序;省略如果你想使用修改日期; for /F
周围的dir
循环读取其输出并枚举所有项目;对于每次迭代,它将当前迭代的项目分配给变量NEWSET
set
;每次都会覆盖变量值,因此最新的项目被列为最后一项,NEWEST
最终包含该项; /Y
告诉copy
命令覆盖现有的目标文件而不询问;如果要显示提示,请将其更改为/-Y
; popd
清除pushd
创建的临时驱动器号并返回到以前的目录;