4

我希望能够从 vbs 脚本中调用以下 cmd 命令:

cmd Client\setupclient.exe /q /targetdir "c:\program files\Microsoft CRM"

我想出了以下 vbs 脚本:

Set oShell = WScript.CreateObject ("WScript.Shell") 
oShell.Run "cmd /c Client\setupclient.exe /q /targetdir c:\program files\Microsoft CRM", 1, true

就我而言,如果目标目录没有空格,例如 c:\bla,这将正常工作。然后该应用程序将安装在该特定文件夹中。

显而易见的问题是,如何将带有空格的 targetdir 定义为路径位置。
我试图用 ' ' 包围它,但这对我不起作用。有什么建议么?

干杯克里斯

4

4 回答 4

5

带空格的路径通常用引号字符 ( ") 括起来。在 VBScript 中,要在字符串中插入引号字符,请使用双引号 ( "")。因此,您的代码应如下所示:

oShell.Run "cmd /c Client\setupclient.exe /q /targetdir ""c:\program files\Microsoft CRM""", 1, true

另外,我不确定cmd /c这里是否真的需要,所以它也可能以这种方式工作:

oShell.Run "Client\setupclient.exe /q /targetdir ""c:\program files\Microsoft CRM""", 1, true
于 2010-08-11T12:46:11.723 回答
0

这并不是所描述的问题,因为被调用的程序而不是参数包含一个空格。谷歌搜索“如果文件名包含空白,whshell.run 不起作用”让我来到这里。

当被调用的程序名称中包含空格时,需要三重引号。(开始和结束引号定义了一个带空格的字符串,并且封闭的双引号映射到该字符串中的单引号。)有两个工作示例。第一个使用三引号。第二个有效地删除了名称中的空白。非工作示例显示了不该做什么(以及我首先尝试的内容。)

' Drive D:\Program Files\Batch\Monitor.bat with no associated command window

Set WshShell = CreateObject("WScript.Shell")

' These methods work: (Select one)
  Return = WshShell.Run("""D:\Program Files\Batch\Monitor.bat""", 0)
' Return = WshShell.Run("D:\.D-DISK\Monitor.bat", 0)
' Note: Here "D:\.D-DISK\Monitor.bat" is a symbolic link to
'       "D:\Program Files\Batch\Monitor.bat"

' The following methods fail because of the space in the filename.
' WshShell.Run( chr(34) & D:\Program Files\Batch\Monitor.bat & Chr(34), 0 )
' Return = WshShell.Run("D:\Program Files\Batch\Monitor.bat", 0)
' Return = WshShell.Run(""D:\Program Files\Batch\Monitor.bat"", 0)

Set WshShell = Nothing
于 2017-11-07T05:30:17.523 回答
0

我结束了

AMPath = "E:\Program Files (x86)\Dropbox\Client\Dropbox.exe"
If FileSyst.Fileexists(AMPath) Then 
 AMPath = chr(34) & AMPath & chr(34)
OBJ_Shell.run (AMPath)
End If 
于 2017-02-07T08:04:55.120 回答
0

1、如果你的操作系统支持8.3文件名,你可以试试短文件名:

cd c:\
dir /x
2017/04/17  20:53    <DIR>          PROGRA~1     Program Files
2017/04/18  03:40    <DIR>          PROGRA~2     Program Files (x86)

然后用 PROGRA~1 替换 C:\Program Files\。

2、在完整路径中使用两个双引号。

WScript.CreateObject("WScript.Shell").Run """C:\Program Files\DirName\FileName.exe"" /option1 value1 /option2 vaule2 argv3"
于 2017-04-18T02:30:35.340 回答