我试图通过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
文件名参数中的那个空格正在填充它。
答案 0 :(得分: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