试图在VBScript中启动一个程序

时间:2015-03-03 10:37:50

标签: command-line vbscript cmd

我以前使用以下代码启动了这个程序:

dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

strCmd = "cmd.exe /c start /D C:\Jts C:\Windows\system32\javaw.exe -cp jts.jar;total.2012.jar -Dsun.java2d.noddraw=true -Dswing.boldMetal=false -Dsun.locale.formatasdefault=true -Xmx768M -XX:MaxPermSize=128M jclient/LoginFrame C:\Jts"
WshShell.Run(strCmd)

然而,现在,由于精彩的java更新,我的java.exe文件位于此处:

C:\Program Files (x86)\Java\jre1.8.0_31\bin\javaw.exe

我无法替换上面的strCmd变量,因此我的VBScript没有错误输出。我知道它与Program Files (x86)中的间距有关,我试图实现这个答案:How to use spaces in CMD?

但它似乎没有起作用。请帮忙解释一下这些空间的用途。

编辑:

我只是想通了。天啊,我讨厌空间。显然这很有用,我想知道这是否是最好的解决方案:

strCmd = "cmd.exe /c start /D C:\Jts C:\""Program Files (x86)""\Java\jre1.8.0_31\bin\javaw.exe -cp jts.jar;total.2012.jar -Dsun.java2d.noddraw=true -Dswing.boldMetal=false -Dsun.locale.formatasdefault=true -Xmx768M -XX:MaxPermSize=128M jclient/LoginFrame C:\Jts"

1 个答案:

答案 0 :(得分:1)

Start命令的引号中的第一组参数被假定为windows标题。

你的命令不起作用,但这可能看起来不错,因为它错了,Windows无法判断它有多么错误并将其视为部分路径......

JavaW将列在应用程序路径下。您将文件夹指定为窗口标题,保留程序名称(但Windows知道如何仅按名称查找GUI程序)。

dim WshShell

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run "cmd.exe /c start """" /D C:\Jts ""C:\Windows\system32\javaw.exe"" -cp jts.jar;total.2012.jar -Dsun.java2d.noddraw=true -Dswing.boldMetal=false -Dsun.locale.formatasdefault=true -Xmx768M -XX:MaxPermSize=128M jclient/LoginFrame C:\Jts"
  • 修复了不必要的混淆和无意义的变量生成。

  • 从“运行”中删除了括号(您没有测试返回值)。

  • 为Windows标题添加一组空白引号("""")

  • 引用的JavaW路径(System32不需要它)。记住,如果报价 用于任何地方开始第一组必须是windowtitle。