这在 Linux 中会非常快,但我对 Windows 风格的批处理脚本不太熟悉。
基本上,我想查找一系列与某个通配符匹配的文件,并获取修改日期最新的文件。
我已经做到了:
for %%X in (*.exe) do (
REM Do stuff....
)
但我不确定存在哪些类型的比较运算符,或者是否有更好的方法来做到这一点。
有人能提供一些好的解决方案吗?理想情况下,它会涉及 Vista 的原始安装;因此不需要像 cygwin/etc 这样的特殊技巧。
答案1
啊,找到了:
for /f %%x in ('dir *.exe /B /O:-D') do set NEWEST_EXE & goto DONE
:DONE
答案2
在 PowerShell 中几乎肯定有更合理的方法可以执行此操作。
但如果必须是 cmd.exe:
FOR /f %f IN ('DIR /b /od *.exe') DO @SET last=%f
ECHO %last%
DIR /b
只列出文件名,就像ls -1
会做的那样;当然/od
是按日期顺序。
因此最后一次迭代设置列表中最后一个文件的名称。