尝试在 VBScript 中启动程序

Trying to start a program in VBScript

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

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"

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

你的命令不工作,它可能看起来是,但那是因为它错了 Windows 无法说出它有多错并将它视为部分路径..

JavaW 将列在应用程序路径下。您将文件夹指定为 window 标题,将程序名称隔离(但 Windows 知道如何仅通过名称查找 GUI 程序)。

昏暗的 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"
  • 修复了不必要的混淆和无意义的变量生成。

  • 从 运行 中删除了括号(您没有测试 return 值)。

  • 为 Windows 标题 ("""") 输入一组空白引号

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