我有一种方法可以从任何驱动器中找到一个 exe 文件,而无需使用 %path%,但我需要将其设置为文件路径变量,而不仅仅是显示。
for %i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do @%i: 2>nul && dir /s ffprobe.exe
任何生成的文件都可以设置为变量(如最后一个),但最新的(按日期或版本)将是最佳的。
--- 有关其他问题的更多信息 ---
for %%d in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
@%%d: 2>nul && for /f "usebackq" %%f in (`dir /s /b ffprobe.exe`) do set "probe=%%f" && goto done
)
这是我使用答案构建的版本。由于某种原因,当路径中某处有空格时,它无法捕获整个文件路径。
要改进您的代码:
用于
dir /s /b
仅获取裸文件名。要将
dir
命令的结果放入变量中,请使用如下内部循环:1.获取所有可用的驱动程序
2.扫描每个经过验证的驱动器
3.使用按大小排序的输出
4.获取 LastModified 日期
5.将上次修改日期和路径一一保存
6.使用日期倒置并获得最新/最高的数字
观察:扫描每个硬盘,以及每个笔式驱动器、存储卡、CD(如果驱动器上存在任何媒体),请记住,这可能需要一些时间......
一些进一步的阅读:
[√]设置 /?
[√] wmic/?
[√]对于/?
[√]对 /F
[√] MountVol /?
[√]重定向 |, <, > 2>, ...
[√]转到:标签/?| 调用:标签/?
[√]延迟扩展(参考
!Expand_RunTime_Variable!
:)[√]从 Windows 命令提示符显示所有驱动器
[√]
Set variable=variable:substrings
| DOS - 字符串操作Windows 命令解释器 cmd.exe 如何解析脚本