【问题标题】:How to handle spaces in path of log file?如何处理日志文件路径中的空格?
【发布时间】:2013-09-18 02:29:40
【问题描述】:

我正在尝试解决这个错误报告: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 接受带空格的路径?

【问题讨论】:

  • 如果系统启用了空格,您可以使用 8.3 名称来避免空格。
  • @Gabe,cmets 不是答案 :) 请发布正式答案。
  • 避免不是处理,所以我只是留下了评论。

标签: windows-installer


【解决方案1】:

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

诀窍是用引号括住/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_\""

【讨论】:

    【解决方案2】:

    我不熟悉 jdk.exe,但 /s /v /qn 表明它是 InstallShield setup.exe。通常这将是 foo.exe /s /v"" 其中 s 和 v 是到 IS Setup.exe 的开关,/v 后面的所有内容都是要传递到子 msiexec 进程的参数。然后需要对这些东西进行双重转义。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-10
      • 2021-08-16
      • 2020-06-18
      相关资源
      最近更新 更多