批处理命令通过通配符名称获取最新文件

Posted

技术标签:

【中文标题】批处理命令通过通配符名称获取最新文件【英文标题】:batch command to grab latest file by wildcard name 【发布时间】:2022-01-11 12:35:03 【问题描述】:

我正在尝试从以LEEXTR_DC30 开头的目录中获取最新文件并将其复制到另一个目录。源文件已过时。我也想去掉日期,把它保存到新目录中LEEXTR_DC30.txt。然后我想在特定时间删除复制的文件....任何帮助将不胜感激!我在下面开始... 原始文件的名称如下(取决于创建日期)LEEXTR_DC30_201404180915a_1.txt

copy "\\taaproc0200a\D$\hbc\data\dc\backup\LEEXTR_DC30*.txt" "D:\Kronos\InterfaceDesigner\DA DC Interface\Associate\DCXX Associate Files"
exit /b 0

【问题讨论】:

我们需要知道文件名上的日期格式,至少要知道如何拆分名称以去除日期。 【参考方案1】:
rem get latest file:
for /f "tokens=*" %%i in ('dir "\\taaproc0200a\D$\hbc\data\dc\backup\LEEXTR_DC30*.txt" /s /od /b') do set a=%%i
rem copy it:
copy "%a% "D:\Kronos\InterfaceDesigner\DA DC Interface\Associate\DCXX Associate Files\LEEXTR_DC30.txt"

至于“在特定时间删除复制的文件”-您可以指定吗? x天后?下周一?如果有新版本?

最后一个很简单:无需删除,只需覆盖即可。 (copy-参数/y)

【讨论】:

只是为了小气 - /s 可以匹配一个非预期的文件。最好使用 pushd 将 CWD 更改为源文件夹,或者使用源文件夹的变量并将其添加到文件名中,删除 /s

以上是关于批处理命令通过通配符名称获取最新文件的主要内容,如果未能解决你的问题,请参考以下文章

如何通过批处理命令获取SVN里的单个文件?

find命令详解

命令历史别名通配符

Visual Studio 2012 tf 命令在注销状态下不起作用

find命令

Windows批处理学习笔记2