在 windows 批处理文件中执行 msiexec.exe 命令时,如何引用不同文件夹中的 MSI 文件?

How to reference MSI files in a different folder when executing msiexec.exe command in windows batch file?

我已经编写了一个 windows 批处理脚本来安装一些 MSI 文件,其中我所有的 MSI 文件都在与批处理脚本相同的文件夹中,并且我使用“%~dp0”来引用我的 MSI 文件。这是我之前使用的命令并且工作正常:

msiexec.exe /i "%~dp0TestMSI.msi" ALLUSERS=1 REINSTALLMODE=vomus /lv*v "C:\Program Files (x86)\Test\TestInstall.log" /qn

但现在我试图将所有 MSI 文件存储在一个单独的文件夹中,并尝试使用相同的 msiexec.exe 命令访问它们。另外,我不应该使用 MSI 的完整文件路径(例如:“C:/Test/MSIs/TestMSI.msi”),因为该位置将来可能会发生变化,这会破坏我的脚本。

我虽然这行得通但行不通:

msiexec.exe /i "%~dp0..\MSIs\TestMSI.msi" ALLUSERS=1 REINSTALLMODE=vomus /lv*v "C:\Program Files (x86)\Test\TestInstall.log" /q

有什么方法可以在 msiexec.exe 命令中引用不同文件夹(在本例中为“MSIs”文件夹)中的 MSI 文件?我尝试了很多方法并浏览了文档,但 none 成功了。

pushd 到目录并将您的 /i 路径重置为文件名:

@echo off
pushd "%~dp0..\MSIs"
msiexec.exe /i "TestMSI.msi" ALLUSERS=1 REINSTALLMODE=vomus /lv*v "C:\Program Files (x86)\Test\TestInstall.log" /q
popd