如何处理日志文件路径中的空格?

时间:2013-09-16 17:05:07

标签: windows-installer msiexec

我正在尝试解决此错误报告:https://issues.jenkins-ci.org/browse/JENKINS-19447

Jenkins正在调用以下命令行:

"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe" /s /v /qn /L "C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe.install.log" REBOOT=ReallySuppress INSTALLDIR="C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_"

事实证明,msiexec不喜欢日志的路径(/ L参数)。如果日志驻留在包含空格的路径中,则msiexec会抱怨命令行无效。如果日志路径不包含空格,则可以正常工作。我猜测引号被忽略,路径被解析为两个独立的参数。

如何让msiexec接受带空格的路径?

2 个答案:

答案 0 :(得分:1)

我很幸运(通过反复试验和谷歌的力量):

诀窍是用引号括住/V的参数,并使用\"转义嵌套引号。这是更新的命令行。

"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe" /s /v"/qn /L \"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\jdk.exe.install.log\" REBOOT=ReallySuppress INSTALLDIR=\"C:\Program Files (x86)\Jenkins\tools\hudson.model.JDK\JDK_auto-install_\""

答案 1 :(得分:0)

我不熟悉jdk.exe但是/ s / v / qn表示它是InstallShield setup.exe。通常这将是foo.exe / s / v“”,其中s和v是切换到IS Setup.exe,而/ v后面的所有内容都是传递给子msiexec进程的args。然后这些事情需要双重逃脱。