来自 VBscript 的带有空格的 Cmd 命令
Posted
技术标签:
【中文标题】来自 VBscript 的带有空格的 Cmd 命令【英文标题】:Cmd commands with spaces from VBscript 【发布时间】:2017-12-12 13:58:44 【问题描述】:我正在尝试通过命令行使用 VBScript 执行 SAS 代码。但是,我在将命令从 VBScript 正确传递到命令行时遇到问题。我很确定这是正确使用引号和chr(34)
的问题,但我无法弄清楚。
所以我想在命令行中运行以下命令:
"C:\Program Files\SAS 9.4\sas.exe" -SYSIN "C:\Program Files\test.sas"
我尝试过类似的东西
Set oShell = WScript.CreateObject ("WScript.Shell")
oShell.run "cmd.exe /K copy ""C:\Program Files\SAS 9.4\sas.exe"" -SYSIN ""C:\Program Files\test.sas"" ", 1, True
Set oShell = Nothing
但是我在命令行中得到一个无效的语法错误。有什么好主意吗?
【问题讨论】:
【参考方案1】:CMD /K
需要一个参数。如果参数包含空格,则必须引用参数。所以完整的命令应该是这样的:
oShell.run "cmd.exe /K "" ""C:\Program Files\SAS 9.4\sas.exe"" -SYSIN ""C:\Program Files\test.sas"" "" ", 1, True
通常,人们不得不担心嵌套的引用/转义,但是 /C 和 /K 开关在引号的工作方式上是特殊的(CMD /?
解释了细节)。如果它看起来像一个单引号参数,则CMD
会自动忽略其中的任何引号。
【讨论】:
哦,是的,我在尝试 google 时感到困惑。所以我要执行的命令只是oShell.run "cmd.exe /K "" ^""C:\Program Files\SAS 9.4\sas.exe^"" -SYSIN ^""C:\Program Files\test.sas^"" "" ", 1, True
因为这应该在命令行中运行 test.sas 文件。但是,上述方法不起作用。我收到一个错误 ` '"C:\Program' `,我认为这表明引用不起作用:-/
啊,对不起,我自己弄错了。 CMD /K
对引号有特殊的行为,这在 CMD 的其他任何地方都看不到,我忘记了。我已经更正了原来的答案。
像魅力一样工作。非常感谢 - 现在我的工作会简单得多;-)以上是关于来自 VBscript 的带有空格的 Cmd 命令的主要内容,如果未能解决你的问题,请参考以下文章