지연된 변수 확장 및 콘텐츠 교체

지연된 변수 확장 및 콘텐츠 교체

텍스트 파일의 테이블을 구문 분석하고, 일부 열의 순서를 변경하고, 약간의 수정을 가하고 싶습니다. 명령 프로세서의 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
)

문제는 Content FOO가 BAR로 대체되지 않는다는 것입니다. 와도 %%아니고 !!. 구문을 사용할 때 콘텐츠 대체를 어떻게 사용해야 합니까 FOR IN DO ()?

답변1

그만큼

set cBB=!cb:FOO=BAR!

작동 중이지만 ;을 사용하려면 모든 항목을 변경해야 합니다 . 특히, 당신은%variable[:modifier]optional%!…!

echo !cB! !cA! !cBB!

관련 정보