
テキスト ファイル内のテーブルを解析し、いくつかの列を並べ替えて、少し変更を加えたいと思います。コマンド プロセッサの 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!