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