它是否或者不可能“将引用的字符串作为参数传递给需要自己引用的命令”?

时间:2012-06-29 16:29:14

标签: escaping cmd

我知道,我知道。这就是疯狂。

标题是指great answer。我想一劳永逸地解决它是否真的可以这样做:

cmd /C start c:\program files            (says "Windows cannot find c:\program)
cmd /C "start c:\program files"          (ditto)
cmd /C start "c:\program files"          (opens another command window)
cmd /C start \"c:\program files\"        (says "Windows cannot find \"c:\program files\")
cmd /C "start \"c:\program files\""      (ditto)
cmd /C "start ^"c:\program files^""      (opens another command window)
rem Ad nauseam.

我想要做的就是启动名称中可能包含空格的文件夹或网址。这是“先进的”吗?

我看过this question,但\"在上面没有用。

我从VFP中的WScript.Shell对象调用它,所以我必须将整个命令作为单个字符串传递。但我想解决更普遍的问题以供参考。

1 个答案:

答案 0 :(得分:1)

您的问题不在于cmd以及它如何处理引号字符。这是开始以及它如何处理引号字符。如果要启动的第一个参数是带引号的字符串,则它是命令窗口的标题,而不是要执行的命令。

用法看起来像这样

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
  [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
  [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B]
  [command/program] [parameters]

"title"     Title to display in window title bar.

你这样做

cmd /c start "" "C:\Program Files"