setlocal enabledelayedexpansion在批处理文件中

时间:2013-07-22 06:27:06

标签: windows batch-file cmd command

setlocal enabledelayedexpansion
FOR /F "skip=2 tokens=2*" %%A IN ('REG QUERY "HKLM\Software\JavaSoft\Java Development Kit\1.6" /v JavaHome') DO set JavaPath=%%B
SETX -m JAVA_HOME "%JavaPath%"
ECHO java__path variable: !JavaPath!
ECHO java__path: %JAVA_HOME%
  • 从注册表设置java home。
  • 值正在设定。
  • SETX正在运作。

当我使用!JavaPath!尝试使用echo时,我获得了值,当我尝试使用echo %JAVA_HOME%时,该值为空。

我尝试使用enabledelayedexpansion,但没有用。如何回应%JAVA_HOME% ??

2 个答案:

答案 0 :(得分:0)

您似乎在注册表中设置了JavaPath(无下划线)的JavaHome

SETX AFAIAA WRITES注册表中的值,但不会将值赋给变量。

注册表中JAVA_HOME的值可用于FUTURE会话,但尚未建立的会话。

答案 1 :(得分:0)

跟随setx使用另一组来重置局部变量。

SETX -m JAVA_HOME "%JavaPath%"
SET "JAVA_HOME=%JavaPath%"

如果这些都在另一个循环中,那么使用!变量!语法。