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