setlocal enabledelayedexpansion
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLMSoftwareJavaSoftJava Development Kit1.6" /v JavaHome') DO set JavaPath=%%B
SETX -m JAVA_HOME "%JavaPath%"
ECHO java__path variable: !JavaPath!
ECHO java__path: %JAVA_HOME%
- 正在从注册表设置java主页。
- 值正在设置中。
- SETX正在工作。
当我尝试使用 !JavaPath!
进行回显时,我得到了值,当我尝试回显%JAVA_HOME%
时,该值为空。
我也尝试过enabledelayedexpansion
但没有用。如何回声%JAVA_HOME%
?
在 setx 后面使用另一个集合来重置局部变量。
SETX -m JAVA_HOME "%JavaPath%"
SET "JAVA_HOME=%JavaPath%"
如果这些都在另一个循环中,则使用 !variable! 语法。
您似乎正在根据注册表中的JavaHome
值(无下划线(设置JavaPath
。
SETX
AFAIAA 将值WRITES
到注册表中,但不会将值分配给变量。
注册表中JAVA_HOME
的值将可用于未来的会议,但不适用于已建立的会话。