延迟变量扩展和内容替换

延迟变量扩展和内容替换

我想解析文本文件中的表格,重新排列一些列并进行一些小修改。我在命令处理器的 BAT 文件中使用 FOR 循环。

echo Header line > outfile.txt

rem get each line from infile.txt but skip first two columns
FOR /f "tokens=3,4*" %%a IN (infile.txt) DO call :handle_line %%a %%b
goto :eof

:handle_line
set a=%1
set b=%2
set b=%b:FOO=BAR%
echo %2 %1 >>outfile.txt
goto :eof

到目前为止,这种方法有效,但速度很慢。我想使用其他 FOR 循环语法

setlocal enabledelayedexpansion
FOR /f "tokens=3,4*" %%a IN (infile.txt) DO (
    set cA=%%a
    set cB=%%b
    set cB=%cb:FOO=BAR%
    set cBB=!cb:FOO=BAR!

    echo %cB% %cA% %cBB%>>outfile.txt
)

问题是内容 FOO 没有被 BAR 替换。既不是用%%也不是!!。当我使用语法时,我应该如何使用内容替换FOR IN DO ()

答案1

set cBB=!cb:FOO=BAR!

可以正常工作,但您需要将所有出现的 更改为使用;具体来说,您需要%variable[:modifier]optional%!…!

echo !cB! !cA! !cBB!

相关内容