简体   繁体   English

批处理文件中的setlocal enabledelayedexpansion

[英]setlocal enabledelayedexpansion in batch file

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%
  • Am setting java home from registry. 我正在从注册表中设置Java主目录。
  • the values is getting set. 值正在设置。
  • SETX is working. SETX正在运行。

when i try echo using !JavaPath! 当我尝试使用!JavaPath!!JavaPath! , am getting value and when i tried echo %JAVA_HOME% , the value is empty. ,正在获取值,当我尝试回显%JAVA_HOME% ,该值为空。

I tried with enabledelayedexpansion also but no use. 我也尝试了enabledelayedexpansion但没有用。 How to echo %JAVA_HOME% ?? 如何回显%JAVA_HOME%

You appear to be setting JavaPath from the value of JavaHome (no underscore) in the registry. 您似乎从注册表中JavaHome的值(无下划线)设置JavaPath

SETX AFAIAA WRITES the value into the registry but does not assign the value to the variable. SETX AFAIAA WRITES值到注册表,但不会将该值赋给变量。

The value in JAVA_HOME in the registry would be available to FUTURE sessions, but not already-established sessions. 注册表中JAVA_HOME中的值可用于FUTURE会话,但不适用于已建立的会话。

Follow the setx with another set to reset the local variable. 在setx之​​后跟随另一个set以重置局部变量。

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

If these are all within another loop then use !variable! 如果这些都在另一个循环中,则使用!variable! syntax. 句法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM