我需要跑步
start cmd.exe /k "C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate & cd d:\home\name\addon\ & cfx run"
问题是第一个路径有空格(Program Files
)。我不能使用引号,因为它们已经用于完整命令。
如何在此命令中使用空格?
我需要跑步
start cmd.exe /k "C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate & cd d:\home\name\addon\ & cfx run"
问题是第一个路径有空格(Program Files
)。我不能使用引号,因为它们已经用于完整命令。
如何在此命令中使用空格?
谁说当 /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 个引号,因此遵循选项 2。
如果您的 exe 名称包含特殊字符&
,例如this&that.exe
. 这会导致问题,因为最初解析 START 命令时未引用 exe 名称。这可以通过转义文件名中的问题字符来解决。
start cmd.exe /k ""this^&that.exe" & echo something else"
您可以尝试使用旧的 DOS 编写风格,其中每个路径段最多有 8 个字符,例如:
C:\Progra~1\Mozill~1\
~1 是按字母顺序排列的:
C:\DisIsMyDirAlpha
C:\DisIsMyDirBeta
C:\DisIsMyDirGamma
这些是:
C:\DisIsM~1
C:\DisIsM~2
C:\DisIsM~3
对第一条路径使用引号并使用以下命令对其进行转义^
:
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
在您使用时可能表现不同&
(我以前从未听说过)。
start cmd.exe /k "" "C:\Program Files (x86)\Mozilla Firefox\sdk\bin\activate & cd d:\home\name\addon\ & cfx run"
在文件路径之前添加这两个额外的引号。这通常对我有用。祝你好运 :)
这适用于 Win 7 Home:start cmd.exe /c "C:\RemoveDrive\RemoveDrive G:"
我无法让 Win 7 Pro 运行路径中有任何空格的 .bat 文件或作为可执行文件的一部分(“RemoveDrive :G”)。所以我制作了 RunEjectG.bat 来运行 EjectG.bat。
这是一种解决方法,但我不能花更多时间来解决问题。注意:/c
开关在运行 bat 后关闭 cmd 窗口,/k
开关使 cmd 窗口保持打开状态。