Windows 批处理脚本:匹配模式的最新文件

Edd*_*ker 9 windows-vista cmd.exe

这在 linux 中会很快,但我对 Windows 风格的批处理脚本还不够熟悉。

基本上我想查找与某个通配符匹配的一系列文件,并获取具有最新修改日期的文件。

我已经到了:

for %%X in (*.exe) do (
REM Do stuff....
)
Run Code Online (Sandbox Code Playgroud)

但我不确定比较运算符的方式是什么,或者是否有更好的方法来做到这一点。

任何人提供任何好的解决方案?理想情况下,它会涉及Vista 的vanilla 安装;所以没有像cygwin/etc这样的特殊技巧。

Edd*_*ker 7

啊,找到了:

for /f %%x in ('dir *.exe /B /O:-D') do set NEWEST_EXE & goto DONE

:DONE
Run Code Online (Sandbox Code Playgroud)


njd*_*njd 5

在 PowerShell 中几乎可以肯定有一种更明智的方法可以做到这一点。
但如果必须是 cmd.exe:

FOR /f %f IN ('DIR /b /od *.exe') DO @SET last=%f

ECHO %last%
Run Code Online (Sandbox Code Playgroud)

DIR /b只列出文件名,就像ls -1会做的那样;的/od当然是日期顺序的。
所以最后一次迭代设置列表中最后一个文件的名称。