延遲變數擴展和內容替換

延遲變數擴展和內容替換

我想解析文字檔案中的表格,重新排序一些列並進行少量修改。我在命令處理器的 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!

相關內容