启动路径包含空格的程序

30

我需要使用VBScript在我的本地系统中启动程序,但是语法方面遇到了困难。目前我正在使用的代码如下:

Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("iexplore")
Set objShell = Nothing

上述代码成功地启动了IE浏览器。我想启动其他浏览器,但是如果我使用 -

Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("c:\Program Files\Mozilla Firefox\firefox.exe")
Set objShell = Nothing

它提示找不到文件或路径。我不确定Run()函数中的参数如何使用,我应该提供EXE文件路径还是一些DOS命令?!

7个回答

59

尝试:-

Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Run("""c:\Program Files\Mozilla Firefox\firefox.exe""")
Set objShell = Nothing

注意字符串中多余的引号。由于 exe 文件所在路径包含空格,因此需要用引号括起来。(在这种情况下,仅使用 "firefox.exe" 就可以工作)。

同时请记住,在 64 位版本的 Windows 上,许多程序存在于 c:\Program Files (x86) 文件夹中。


1
嗨,谢谢!我被引号搞混了:D但是需要注意的是,仅使用“firefox.exe”是不起作用的。 - anonymous
4
您可以使用 objShell.Run("""%ProgramFiles%\Mozilla Firefox\firefox.exe""") 来解决64位问题。 - user533832
2
不是这样的,Jack。Firefox可能仍然安装在%ProgramFiles(x86)%下。 - mgr326639
2
如果您想将参数传递给exe,请不要将它们包含在路径的"""中,而应执行以下操作:objShell.Run("""c:\Program Files\Mozilla Firefox\firefox.exe""" & " -p1 someValue") - Matt M

3
set shell=CreateObject("Shell.Application")
' shell.ShellExecute "application", "arguments", "path", "verb", window
shell.ShellExecute  "slipery.bat",,"C:\Users\anthony\Desktop\dvx", "runas", 1
set shell=nothing 

3
您可以使用“Exec”命令。
Dim objShell
Set objShell = WScript.CreateObject( "WScript.Shell" )
objShell.Exec("c:\Program Files\Mozilla Firefox\firefox.exe")
Set objShell = Nothing

1
此答案与上面的答案相同,只是略微有误,因为它没有在程序名称周围包含双引号。 - Stephen Holt
1
这个答案与上面的答案几乎相同,只是它消除了需要引用多个引号,并且它确实有效。 - F-3000
虽然Exec不允许从C:\ Users \ user \ Appdata \ Local启动程序,但Run可以从那里启动应用程序。(TeamSpeak 3在那里安装,至少对我来说是这样) - F-3000

2

它正在与之配合工作

Set WSHELL = CreateObject("Wscript.Shell")
WSHELL.Exec("Application_Path")

如果我们只想输入应用程序名称,那么参数应该是什么呢?

例如,在使用Internet Explorer的情况下。

WSHELL.Run("iexplore")

1
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run("firefox")
Set objShell = Nothing

请尝试这个。

它的类型不是我想要的,只是对齐搞乱了。页面上有一个类似的答案,缩进正确。 - Mushir Shaikh

1

找到要运行的应用程序的.exe文件,例如iexplore.exe和firefox.exe,然后去掉.exe,并在objShell.Run("firefox")中使用它。

希望这可以帮到你。


-10

复制包含firefox.exe的文件夹并将其放置在c:\中。脚本在遍历文件树时遇到了困难。我发现当我将*.exe文件放在c:\中时,它消除了错误消息“找不到文件”。


5
把所有东西放在文件系统根目录下并不是一个非常实用的解决方案。 - Anders R. Bystrup
4
那个解决方案会带来一系列其他问题。想象一下,你用两个程序实现这个方案,两个程序都包含一个名为common.dll的文件。 - Marcus Riemer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接