Verzögerte Variablenerweiterung und Inhaltsersetzung

Verzögerte Variablenerweiterung und Inhaltsersetzung

Ich möchte eine Tabelle in einer Textdatei analysieren, einige Spalten neu anordnen und kleine Änderungen vornehmen. Ich verwende die FOR-Schleife in einer BAT-Datei des Befehlsprozessors.

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

Das funktioniert bisher, ist aber langsam. Ich möchte die andere FOR-Schleifensyntax verwenden

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
)

Das Problem ist, dass der Inhalt FOO nicht durch BAR ersetzt wird. Weder mit %%noch !!. Wie soll ich die Inhaltsersetzung verwenden, wenn ich die FOR IN DO ()Syntax verwende?

Antwort1

Der

set cBB=!cb:FOO=BAR!

funktioniert, aber Sie müssen alle Vorkommen von in ändern ; genauer gesagt müssen Sie%variable[:modifier]optional%!…!

echo !cB! !cA! !cBB!

verwandte Informationen