创建.bat文件以从网络驱动器复制最新文件并更改其名称和扩展名

时间:2016-01-12 19:26:44

标签: batch-file

我在.bat中有以下内容。我试图从网络驱动器中提取最新文件(因为每次生成新文件时文件名都会更改)并将其复制到桌面上的文件夹中更改名称,以便我可以从外部数据库中点击它。不幸的是,我对.bat文件相对较新,无法弄清楚如何提取最新文件而不是下面定义的文件。我将把它转过来并将其放入任务调度程序中,每隔30分钟拉一次文件。

copy \\fipr01\SNAP\P161201135302673.tmp C:\Users\ddtacopy\Desktop\AutoCopy\SNAP.txt

1 个答案:

答案 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创建的临时驱动器号并返回到以前的目录;