目标:我想使用CMD.EXE查找位于C:\ProgramData
的单个MSI - 而不是其他地方 - 然后执行它。
我的尝试: dir /s /b C:\programdata\*"my program"*.msi | explorer
问题:资源管理器已打开,但未启动我的MSI。
约束:我无法写一个.BAT。所以这必须在命令行上运行。
虽然这并不让我感到惊讶,但我显然不了解CMD.EXE并且管道足够好以便做到这一点。有什么指导吗?
答案 0 :(得分:1)
A * .msi文件不是可执行文件。它是一个已编译的安装程序脚本文件,需要执行解释程序。口译员是msiexec.exe
。
可以使用命令 DIR 或使用命令 FOR 来搜索文件。
使用命令 FOR :
的更好解决方案for /R C:\ProgramData %# in ("my program*.msi") do %SystemRoot%\System32\msiexec.exe /i "%#"
使用命令 DIR 和 FOR 的更复杂的解决方案:
for /F "delims=" %# in ('dir /A-D /B /S "C:\ProgramData\my program*.msi" 2^>nul') do %SystemRoot%\System32\msiexec.exe /i "%#"
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
dir /?
for /?
msiexec /?
注意:如果在批处理文件中使用了两个命令行之一,则需要%%#
而不是%#
。