I created th following text file which contains properties (properties.txt):
NAME=John
SURNAME=Blue
AGE=50
I have written a for loop in order to read line by line file (properties.txt). In this loop I call two function in order to read the PROPERTY_NAME and the PROPERTY_VALUE.
Everything is straight forward and easy, but I found out that although I get the right value in each of the functions, the result cannot be stored in the variable.
I provide you the following code in order to understand what I am talking about:
@ECHO OFF
SET PROPERTIES_FILE=properties.txt
SET PROPERTY_NAME=PROPERTY_NAME
SET PROPERTY_VALUE=PROPERTY_NAME
FOR /f "tokens=*" %%L IN (%PROPERTIES_FILE%) DO (
CALL :GET_PROPERTY_NAME %%L
CALL :GET_PROPERTY_VALUE %%L
REM I get the wrong value. I actually get the initial values.
REM WHY? How can I solve this?
ECHO PROPERTY_NAME: %PROPERTY_NAME% PROPERTY_VALUE: %PROPERTY_VALUE%
)
GOTO END_OF_PROGRAM
:GET_PROPERTY_NAME
SET PROPERTY_NAME=%~1
REM I get the right value
ECHO PROPERTY_NAME: %PROPERTY_NAME%
EXIT /B 0
:GET_PROPERTY_VALUE
SET PROPERTY_VALUE=%~2
REM I get the right value
ECHO PROPERTY_VALUE: %PROPERTY_VALUE%
EXIT /B 0
:END_OF_PROGRAM
The Output of this code is:
PROPERTY_NAME: NAME
PROPERTY_VALUE: John
PROPERTY_NAME: PROPERTY_NAME PROPERTY_VALUE: PROPERTY_NAME
PROPERTY_NAME: SURNAME
PROPERTY_VALUE: Blue
PROPERTY_NAME: PROPERTY_NAME PROPERTY_VALUE: PROPERTY_NAME
PROPERTY_NAME: AGE
PROPERTY_VALUE: 50
PROPERTY_NAME: PROPERTY_NAME PROPERTY_VALUE: PROPERTY_NAME
The expected output should be:
PROPERTY_NAME: NAME
PROPERTY_VALUE: John
PROPERTY_NAME: NAME PROPERTY_VALUE: John
PROPERTY_NAME: SURNAME
PROPERTY_VALUE: Blue
PROPERTY_NAME: SURNAME PROPERTY_VALUE: Blue
PROPERTY_NAME: AGE
PROPERTY_VALUE: 50
PROPERTY_NAME: AGE PROPERTY_VALUE: 50
Does anybody know, why the value is not assigned from the function?
In case you know how to solve this issue, I will appreciate it.