1
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 正在工作。

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

我也试过了,enabledelayedexpansion但没有用。怎么回声%JAVA_HOME%??

4

2 回答 2

0

您似乎是根据注册表中(无下划线)JavaPath的值进行设置的。JavaHome

SETXAFAIAAWRITES将值写入注册表但不将值分配给变量。

注册表中的值JAVA_HOME可用于 FUTURE 会话,但不能用于已建立的会话。

于 2013-07-22T07:46:15.260 回答
0

跟随 setx 与另一个集合来重置局部变量。

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

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

于 2013-07-22T13:31:25.667 回答