在每个循环中保存For / f参数

时间:2018-01-12 06:49:31

标签: batch-file

我正在编写一个批处理脚本,应该使用.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%分别位于不同的变量中。现在它只是给我最后一个循环的结果。

1 个答案:

答案 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标记作为变量名。