@echo off setlocal enabledelayedexpansion REM 获取 JAVA_HOME 的目录 for /f "delims=" %%i in ('echo %JAVA_HOME%') do set "java_home_dir=%%i" REM 判断 JAVA_HOME 的目录是否为 Java 8 if "%java_home_dir%"=="%JAVA_HOME8%" ( set "JAVA_HOME=%JAVA_HOME12%" echo JDK 12 is set as the current version. ) else if "%java_home_dir%"=="%JAVA_HOME12%" ( set "JAVA_HOME=%JAVA_HOME8%" echo JDK 8 is set as the current version. ) else ( echo Current JDK version is neither Java 8 nor Java 12. ) echo. echo Press SPACE to close the window. pause >nul 依旧无法实现修改%JAVA_HOME%的目录
时间: 2024-04-10 13:27:49 浏览: 102
自动获取当前目录文件名+添加输出文本时间_establish33w_DOS_
很抱歉,之前给出的代码有一个问题,导致无法修改 `%JAVA_HOME%` 的目录。在批处理文件中,使用 `setlocal enabledelayedexpansion` 启用延迟变量扩展是正确的,但在 `if` 语句中,我们需要使用 `!java_home_dir!` 而不是 `%java_home_dir%`。请尝试以下修正后的代码:
```batch
@echo off
setlocal enabledelayedexpansion
REM 获取 JAVA_HOME 的目录
for /f "delims=" %%i in ('echo %JAVA_HOME%') do set "java_home_dir=%%i"
REM 判断 JAVA_HOME 的目录是否为 Java 8
if "!java_home_dir!"=="%JAVA_HOME8%" (
set "JAVA_HOME=%JAVA_HOME12%"
echo JDK 12 is set as the current version.
) else if "!java_home_dir!"=="%JAVA_HOME12%" (
set "JAVA_HOME=%JAVA_HOME8%"
echo JDK 8 is set as the current version.
) else (
echo Current JDK version is neither Java 8 nor Java 12.
)
echo.
echo Press SPACE to close the window.
pause >nul
```
请注意,在 `if` 语句中,我们将 `%java_home_dir%` 改为了 `!java_home_dir!`。这样可以确保在 `if` 语句中正确地使用延迟变量扩展。
运行修正后的代码,现在应该能够根据 `%JAVA_HOME%` 的目录进行判断,并相应地修改 `%JAVA_HOME%` 的目录。如果问题仍然存在,请提供更多关于问题的详细信息,以便我能够更好地帮助你解决。
阅读全文