VBS中解决路径带空格的三种方法

发布时间 2023-08-26 21:52:31作者: jack_Meng

方法一

Set wshell=CreateObject("WScript.Shell")

wshell.Run  """C:\Program Files\360\360se\360se.exe""",5,True

Set wshell = Nothing

 

备注说明:

命令格式:object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

因为strCommand必须是一个字符串,那么wshell.Run  """这里的三个引号,最左面的是指字符串,后面紧跟着的两个引号会被转化成一个引号。

还有使用执行命令行参数的,也是同样的使用两个引号,如:我使用7z命令压缩文件夹

我们正常情况下,可以使用以下命令将文件夹压缩为7z格式:

"D:\Program Files\7-Zip\7z.exe" a -t7z .\folder.7z "D:\Program Files\Logs\"
在上述示例中,a表示添加文件到压缩包,-t7z表示压缩格式为7z,folder.7z表示压缩后的文件名,folder表示要压缩的文件夹名。

那么如果使用vbs执行的话,

object.Run("""D:\Program Files\7-Zip\7z.exe"" a -t7z .\folder.7z ""D:\Program Files\Logs\""" ,0,false)

以下方法同样,就不一一解释了。

 

方法二 

temp="C:\Program Files\360\360se3\360se.exe"

path = Chr(34) & temp & Chr(34)

Set wshell=CreateObject("WScript.Shell")

wshell.Run path,1,True

Set wshell = Nothing

 

方法三

Public Const vbQuote = """"

temp="C:\Program Files\360\360se3\360se.exe"

path = vbQuote & temp & vbQuote

Set wshell=CreateObject("WScript.Shell")

wshell.Run path,1,True

Set wshell = Nothing

 

备注:

 

【出处】:https://www.cnblogs.com/BeyondTechnology/p/1936514.html

=======================================================================================

来自 VBscript 的带有空格的 Cmd 命令

Posted 2023-04-19

技术标签:

【中文标题】来自 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 命令的主要内容,如果未能解决你的问题,请参考以下文章

cmd - 使用curl命令的注意点

使用 vbscript 命令提示符中的多个命令

如何在带有命令行参数的 vbscript 中调用函数?

在 Windows .cmd 文件或批处理文件的路径中设置带有空格的路径变量

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

cmd start命令 路径含空格

 

出处:https://it.cha138.com/zd/show-19389358.html