遅延変数エンパンションとコンテンツ置換


0

テキストファイル内のテーブルを解析し、いくつかの列を並べ替えて、少し変更したい。コマンドプロセッサの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 ()構文を使用する場合、コンテンツ置換をどのように使用すればよいですか?

回答:


0

set cBB=!cb:FOO=BAR!

動作していますが、使用するすべてのオカレンスを変更する必要があります。具体的には、する必要があります%variable[:modifier]optional%!…!

echo !cB! !cA! !cBB!
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.