VBScript 命令窗口 - 传递命令语法

Posted

技术标签:

【中文标题】VBScript 命令窗口 - 传递命令语法【英文标题】:VBScript Command window - passing a command syntax 【发布时间】:2017-05-30 19:57:07 【问题描述】:

我正在尝试通过 VBS 获取在 cmd vindow 中运行的命令。就像这个答案一样: How to keep the VBScript command window open during execution

我要发出的命令是这样的,因为它在 .cmd 文件中运行。

"\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\dtexec" /x86 /f "\\path\folder\folder with space\Import.dtsx"

我无法让它按照上述答案的语法工作:

objShell.run "%comspec% /c ""SomeProgram.exe -R & pause""", 1, True

认为这是双引号问题,但我找不到。

(我必须使用 dtexec 的整个路径来强制使用 16 位版本。)

后续:============================================== ==========

这行得通:

oShell.Run "%comspec% /C ""\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\dtexec"" /x86 /f c:\temp\Import.dtsx & Pause", 1, True

这不是:

oShell.Run "%comspec% /C ""\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\dtexec"" /x86 /f ""c:\temp\temp two\Import.dtsx"" & Pause", 1, True

也不是这个:

oShell.Run "%comspec% /C ""\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\dtexec /x86 /f c:\temp\temp two\Import.dtsx"" & Pause", 1, True

正是文件名参数中的那个空间正在容纳它。

【问题讨论】:

【参考方案1】:

你不需要pause,只需告诉CMD在命令完成后保持窗口打开(/k)而不是关闭它(/c):

objShell.Run "%comspec% /k program.exe -R", 1, True

只有当路径中有空格时才需要嵌套双引号,例如:

objShell.Run "%comspec% /k ""C:\some folder\program.exe"" -R", 1, True

编辑:如果命令行中的参数也是带空格的路径,那么您需要在每个路径周围加上引号,并在整个语句周围加上另一组引号:

objShell.Run "%comspec% /c """"C:\some folder\program.exe"" /p ""foo bar"" & pause""", 1, True

【讨论】:

我想使用 /c 语法来关闭“按任意键”。我在上面的后续工作中得到了这个结果。但是当文件名参数也有空格时,它不会像我写的那样工作。各种方法都试过了,显然错过了正确的方法。

以上是关于VBScript 命令窗口 - 传递命令语法的主要内容,如果未能解决你的问题,请参考以下文章

如何用VBS打开一个程序

在批处理中调用VBScript(支持获取返回值)

怎样用cmd执行vbs脚本,求简单实用命令

VBScript基础篇

在窗口中运行的 VBScript 如何发出哔哔声(或播放系统声音)? [复制]

如何在执行期间保持 VBScript 命令窗口打开