【问题标题】:Correct quoting for cmd.exe for multiple arguments为多个参数正确引用 cmd.exe
【发布时间】:2012-10-05 04:14:21
【问题描述】:

我想打电话

cmd /c "C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.com" mysolution.sln /build "release|win32"

不幸的是,这不起作用,因为我得到了错误:

'C:\Program' 未被识别为内部或外部命令, 可运行的程序或批处理文件。

据我了解,我需要为 | 的空格和引号加上引号,但我只能使用引号一次。

任何想法如何正确引用此命令行调用?

【问题讨论】:

    标签: cmd


    【解决方案1】:

    空格用于分隔参数。在您的情况下, C:\Program 成为参数。如果您的文件路径包含空格,则添加双引号。然后 cmd 会将其识别为单个参数。

    【讨论】:

      【解决方案2】:

      文件名或目录名中的空格很糟糕。

      正确的语法是将每个包含空格的目录名称用双引号括起来

      cmd /c C:\"Program Files"\"Microsoft Visual Studio 9.0"\Common7\IDE\devenv.com mysolution.sln /build "release|win32"

      【讨论】:

        【解决方案3】:

        注意开头和结尾的""

        运行一个程序并传递一个长文件名

        cmd /c write.exe "c:\sample documents\sample.txt"
        

        程序路径中的空格

        cmd /c ""c:\Program Files\Microsoft Office\Office\Winword.exe""
        

        程序路径中的空格+参数

        cmd /c ""c:\Program Files\demo.cmd"" Parameter1 Param2
        

        程序路径中的空格+带空格的参数

        cmd /k ""c:\batch files\demo.cmd" "Parameter 1 with space" "Parameter2 with space""
        

        启动 Demo1,然后启动 Demo2

        cmd /c ""c:\Program Files\demo1.cmd" & "c:\Program Files\demo2.cmd""
        

        CMD.exe (Command Shell)

        【讨论】:

        • 我似乎无法让它与 RunAs 一起使用:RUNAS /savecred /user:DOMAIN\USER "CMD /K "CD C:\Temp"" ... 你能帮忙吗?
        • >RUNAS /savecred /user:computername\Administrator "CMD /K CD C:\Temp"
        • 文档说使用 &&,而不是 & 来加入命令。 microsoft.com/resources/documentation/windows/xp/all/proddocs/…
        • @nmz787 :如果所有命令都用引号括起来(例如,"command&&command&&command"),则仅是 &&
        • @nmz787, moskito-x, a & b & c 总是执行 a, b 和 c,但是 a && b && c 使它有条件。 && 后面的命令只有在前面的命令成功时才会执行。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        • 1970-01-01
        • 2019-04-04
        • 1970-01-01
        相关资源
        最近更新 更多