我想解析文本文件中的表格,重新排列一些列并进行一些小修改。我在命令处理器的 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!