从通过VBA启动的.bat文件运行时找不到java.exe

时间:2014-07-03 09:36:36

标签: java vba batch-file 32bit-64bit wow64

我有一个script.bat,如下所示:

c:\windows\system32\java.exe -version
pause

如果我从命令窗口运行脚本,它可以正常工作,并输出Java版本信息:

java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

但是,我在Excel中也有一个调用相同脚本的VBA宏:

Shell "C:\users\Matt\script.bat", vbNormalFocus

执行.bat文件,但在查找Java时遇到问题:

C:\Users\Matt\Documents>c:\windows\system32\java.exe -version
'c:\windows\system32\java.exe' is not recognized as an internal or external command,
operable program or batch file.

关于出了什么问题的任何想法?奇怪的是,这在许多其他机器上运行良好,只是在这台笔记本电脑上失败了(64位Windows 7,使用Excel 2010)。

3 个答案:

答案 0 :(得分:3)

这似乎与此处描述的问题相同:

http://betterlogic.com/roger/2011/04/cannotunable-to-run-java-exe-from-cwindowssystem32/

即,Windows正在尝试some 64-bit compatibility magicC:\Windows\System32\java.exe重定向到C:\Windows\SysWOW64\java.exe,但Java并未在该位置安装合适的exe。

答案 1 :(得分:1)

我通过从C:\ Windows \ system32复制我的java1.7 64位安装的exe并将它们粘贴到C:\ Windows \ SysWOW64来解决这个问题。我不知道这是否适用于其他版本的java,它不需要使用32位java安装。使用此方法,不需要更新或维护路径环境变量。

答案 2 :(得分:-1)

我认为这是因为你必须通过解压缩二进制文件来安装java。

路径设置正确,因为它在命令行上运行,但在您提供完整路径时却没有。运行以下命令获取java.exe目录。

c:\> for %i in (java.exe) do @echo.   %~$PATH:i