我正在编写一个批处理脚本,应该使用.cfg
来获取某些信息。
使用“#”我可以在我的cfg
中注释,这样可以正常工作。但是现在我还希望从不同变量的每个循环中安全%%b
。我该怎么做?
SETLOCAL EnableDelayedExpansion
SETLOCAL enableextensions
FOR /f "tokens=1,2 delims==" %%a in (.\test_2.44.cfg) DO (
set x=%%a
IF "!x:~0,1!"=="#" (
echo skipped
) else (
echo %%b
)
)
.cfg
#
# test
#
NAME_LOGDATEI=.\test2.44.log
NAME_CSV=.\test_2.44.csv
#START_DIR=c:\windows
START_DIR=%ProgramFiles%
我希望.\test2.44.log
,.\test_2.44.csv
和%ProgramFiles%
分别位于不同的变量中。现在它只是给我最后一个循环的结果。
答案 0 :(得分:0)
未经测试:
SETLOCAL EnableDelayedExpansion
SETLOCAL enableextensions
set /a counter=1
FOR /f "eol=# tokens=1* delims==" %%a in (.\test_2.44.cfg) DO (
set "res[!counter!]=%%b"
set /a counter=counter+1
rem --OR--
set %%a=%%b
)
echo %START_DIR% -- %NAME_LOGDATEI%
echo %res[1]% -- %res[2]%
要跳过以#
开头的行,您可以在for / f选项中使用eol=#
。
保存所有可以使用伪数组的行或使用%%a
标记作为变量名。