Sayros
Sayros

Reputation: 105

How to access to the value of an environment variable in other variable in batch file

this is my code :

SET JAVA_VERSION=%1 
REM here lets assume the user enter a JAVA_7_HOME as an argument   
@ECHO %JAVA_VERSION% 
REM this print me JAVA_7_HOME because JAVA_7_HOME is STRING
REM Now I want to access to the value of environment variable JAVA_7_HOME so I done this :
if %%%JAVA_7_HOME%%%  ==[]GOTO INDEFINED_VARIABLE 
REM here I concatinate JAVA_7_HOME with % % at the left and at the right but doesn't works

I Do not Know how to access to the value of the environment variable JAVA_7_HOME.

Thank you at all.

Upvotes: 0

Views: 92

Answers (2)

Sayros
Sayros

Reputation: 105

I backed to this subject :), So your solution it works fine without a loop for but now I changed the concept and I have a variable called CONTEXT_VARAIABLE which contains some others names of environnements variables for example in my case is:

CONTEXT_VARAIABLE=JAVA_HOME;JBOSS_HOME

so now I loop from this variable CONTEXT_VARAIABLE to get each variable and do some treatement with it so my code here is:

setlocal EnableDelayedExpansion
FOR %%L IN (%SOLIFE_VERSION%) DO ( 
    SET JAVA_JBOSS_HOME=%%%%L%% 
    @ECHO !JAVA_JBOSS_HOME! 
)

here each time of the loop it prints me: %JAVA_HOME% %JBOSS_HOME% and now my problem I want to access to these variables and if I use CALL SET it makes an error because I think we are not allowed to use CALL SET in loop for. So please if you have an idea about this problem.

Thank you.

Upvotes: 0

MC ND
MC ND

Reputation: 70923

CALL SET JAVA_VERSION=%%%1%%

The line will be parsed to

CALL SET JAVA_VERSION=%JAVA_7_HOME%

Now, the call command is executed and the line reparsed, and the final command executed is

SET JAVA_VERSION=C:\SomeWhere

Also, you can enable delayed expansion and do

SETLOCAL EnableDelayedExpansion
SET JAVA_VERSION=!%1!    

Upvotes: 1

Related Questions