我需要运行
start cmd.exe /k "C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate & cd d:\home\name\addon\ & cfx run"
问题是第一个路径有空格(Program Files
)。我不能使用引号,因为它们已用于完整命令。
如何在此命令中使用空格?
答案 0 :(得分:16)
谁说在引用/ C命令时你不能在exe路径周围添加引号?它工作正常! : - )
start cmd.exe /k ""C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate" & cd d:\home\name\addon\ & cfx run"
执行前删除/ C命令周围的外引号,只留下exe路径周围的引号。您可以在帮助中阅读有关CMD流程报价的方式。只需在命令提示符下键入CMD /?
或HELP CMD
即可。它确实令人困惑。
If /C or /K is specified, then the remainder of the command line after
the switch is processed as a command line, where the following logic is
used to process quote (") characters:
1. If all of the following conditions are met, then quote characters
on the command line are preserved:
- no /S switch
- exactly two quote characters
- no special characters between the two quote characters,
where special is one of: &<>()@^|
- there are one or more whitespace characters between the
two quote characters
- the string between the two quote characters is the name
of an executable file.
2. Otherwise, old behavior is to see if the first character is
a quote character and if so, strip the leading character and
remove the last quote character on the command line, preserving
any text after the last quote character.
您的命令有两个以上的引号,因此遵循选项2.
如果您的exe名称包含&
之类的特殊字符,例如this&that.exe
,则上述操作无效的唯一时间。这会导致问题,因为最初解析START命令时不会引用exe名称。这可以通过转义文件名中的问题字符来解决。
start cmd.exe /k ""this^&that.exe" & echo something else"
答案 1 :(得分:4)
您可以尝试旧的DOS写作风格,其中每个路径段都有最多8个字符,如:
C:\Progra~1\Mozill~1\
〜1来自字母顺序:
C:\DisIsMyDirAlpha
C:\DisIsMyDirBeta
C:\DisIsMyDirGamma
是这些:
C:\DisIsM~1
C:\DisIsM~2
C:\DisIsM~3
答案 2 :(得分:0)
使用第一条路径的引号并使用^
转义它们:
start cmd.exe /k "^"C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate^" & cd d:\home\name\addon\ & cfx run"
修改强>
关于@dbenham的评论:
有趣。使用^
进行转义确实对我有用,虽然我的实际命令略有不同,因为我用我想到的第一个命令测试了它。
这适用于我的机器(Windows XP SP 3):
start cmd.exe /k "xcopy ^"C:\Program Files\Windows Live\Messenger\license.rtf^" c:\"
我还阅读了关于使用双引号""
进行转义的内容,但对于我的上述示例,这对我不起作用。
再说一遍,我不是批处理文件的大师,当你使用cmd.exe
时,&
可能会有不同的行为(我之前从未听说过)。
答案 3 :(得分:0)
start cmd.exe /k "" "C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate & cd d:\home\name\addon\ & cfx run"
在文件路径之前添加这两个额外的引号。这通常对我有用。 祝你好运:)
答案 4 :(得分:0)
这可用于Win 7 Home:start cmd.exe /c "C:\RemoveDrive\RemoveDrive G:"
我无法使Win 7 Pro在路径中或可执行文件的一部分(“ RemoveDrive:G”)中运行带有空格的.bat文件。所以我让RunEjectG.bat来运行EjectG.bat。
这是一种解决方法,但是我不能花更多的时间来解决问题。
注意:运行蝙蝠后,/c
开关会关闭cmd窗口,/k
开关会使cmd窗口保持打开状态。