Per this question:
How to identify the list of unique variable names that are parsed from text file using batch script
I managed to write batch script that will load the variable values and array variable values from a text file by parsing it.
Now, I want to do this in a function or another batch script which will be called by the main script. For example:
:: this is the main Windows Batch Script
call LoadConfigValues.bat
:: display the loaded vales
set
I noticed that since the script being called LoadConfigValues.bat
has the statement SETLOCAL ENABLEDELAYEDEXPANSION
then all the variables generated by this script will be removed.
How I can force the new variables created by the script LoadConfigValues.bat
will be available to the main script?
Solution 1: (the dark one's suggestion)
setlocal enabledelayedexpansion
call subroutine
rem your variables available here
in the subroutine:
if "" neq "!!" setlocal enabledelayedexpansion
so that the setlocal
in the subroutine is only invoked if it it not already in effect (BUT - the variables changed/created would be backed out by the implicit endlocal
at the end of the subroutine script).
Solution 2:
call subroutine "filename"
for /f "usebackqdelims=" %%e in ("filename") do set "%%e"
del "filename"
in the subroutine:
if "%~1" neq "" for %%e in (%keynameslist%) do set %%e>>"%~1"
to write the variablenames that start with the entries in keynameslist
to the file %1
and their values in the format var=value
if %1
is specified.
[both untested]