目标文件夹名称的文件夹路径中的批处理通配符 (*) 会随时间变化

Kri*_*ris 3 windows cmd batch-file

我想从批处理中定位一个文件夹,该文件夹可能会随着时间的推移而更改其名称。假设我们Folder 10102018下次运行批处理时,文件夹名称将是Folder 20102018.

从 CMD 我可以导航到C:\Fold*哪个结果(C:\Folder 10102018) 使用批处理文件错误中The system cannot find the path specified.

命令是->"..\..\Folder 1.1.10102018\Install.exe"

我试图实现的目标是使用其名称“Folder*”的常量位进入该文件夹,并忽略其后面的任何内容,因为它并不真正相关......但很难解决。

一如既往,感谢任何帮助或替代想法!

asc*_*pfl 5

我相信这就是您正在寻找的内容(假设只有一个匹配的文件夹):

for /D %%I in ("..\..\Folder 1.1.*") do "%%~I\Install.exe"
Run Code Online (Sandbox Code Playgroud)

通配符只能用在路径的最后一个元素中,并且根本不能用于运行应用程序。

打开命令提示符窗口,键入并阅读帮助文本以了解其含义。for/?for [/D]

  • `for /D` 迭代所有与给定模式匹配的文件夹,此处引用该模式是为了避免 _spaces_ 出现问题;`%%I` 是循环元变量,每次循环迭代都会扩展到找到的文件夹,包括(潜在的)双引号;`%%~I` 扩展为与 `%%I` 相同,但删除了周围的双引号,因此最终路径 `"%%~I\Install.exe"` 不是双双引号的(因此防止像 `""..\..\Folder 1.1.10102018"\Install.exe"` 之类的东西,这会引起麻烦)... (2认同)