Java 如何使用批处理脚本中的参数调用程序?

Java 如何使用批处理脚本中的参数调用程序?,java,windows,batch-file,Java,Windows,Batch File,我喜欢确定哪些Java运行时环境可用,并检查它们的版本。我的代码将输出正确的jre路径,但无法执行java.exe 当程序路径为变量时,使用批处理脚本中的参数调用程序的正确方法是什么 我的脚本 @echo off :findjres for /d %%i in ("C:\Program Files\Java\jre*") do ( set /a cpath+=1 call :pushpath "%%i" ) for /d %%i in ("C:\Program Files (

我喜欢确定哪些Java运行时环境可用,并检查它们的版本。我的代码将输出正确的jre路径,但无法执行java.exe

当程序路径为变量时,使用批处理脚本中的参数调用程序的正确方法是什么

我的脚本

@echo off


:findjres
for /d %%i in ("C:\Program Files\Java\jre*") do (
    set /a cpath+=1
    call :pushpath "%%i"
)
for /d %%i in ("C:\Program Files (x86)\Java\jre*") do (
    set /a cpath+=1
    call :pushpath "%%i"
)
goto :versjres


:pushpath
set tpath=%1
set xpath!%cpath%=%tpath:~1,-1%
goto :end

:versjres
for /f "usebackq delims==! tokens=1-3" %%i IN (`set xpath`) do (
    echo Array field number %%j have value %%k
    %%k\bin\java.exe --version
)

pause


:end
错误

Exception in thread "main" java.lang.NoClassDefFoundError: Files
Caused by: java.lang.ClassNotFoundException: Files
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: Files.  Program will exit.
换线

%%k\bin\java.exe --version


这对我起了作用。

Awww,我很愚蠢——你是对的。如果你工作太久,就会发生这种情况。谢谢你,@halex!考虑到上面的错误消息:“找不到主类:文件”。我假定java存储在
C:\Program Files
或'C:\Program Files(x86)'中的一个中,这些空格将取消目录级别。这就是为什么引用有效。
"%%k\bin\java.exe" -version