Ampliación de variables retrasadas y reemplazo de contenido

Ampliación de variables retrasadas y reemplazo de contenido

Quiero analizar una tabla en un archivo de texto, reordenar algunas columnas y realizar pequeñas modificaciones. Utilizo el bucle FOR en un archivo BAT del procesador de comandos.

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

Esto funciona hasta ahora pero es lento. Quiero usar la otra sintaxis del bucle 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
)

El problema es que el contenido FOO no se reemplaza por BAR. Ni con %%ni !!. ¿Cómo debo utilizar el reemplazo de contenido cuando uso la FOR IN DO ()sintaxis?

Respuesta1

El

set cBB=!cb:FOO=BAR!

está funcionando, pero es necesario cambiar todas las apariciones de usar ; específicamente, necesitas%variable[:modifier]optional%!…!

echo !cB! !cA! !cBB!

información relacionada