Reforço da variável atrasada e substituição de conteúdo

0

Eu quero analisar uma tabela em um arquivo de texto, reordenar algumas colunas e fazer pequenas modificações. Eu uso o loop FOR em um arquivo BAT do processador 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

Isso funciona até agora, mas é lento. Eu quero usar a outra sintaxe de loop 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
)

O problema é que o conteúdo FOO não é substituído por BAR. Nem com %% nem !! . Como devo usar a substituição de conteúdo quando uso a sintaxe FOR IN DO () ?

    
por harper 10.10.2015 / 17:33

1 resposta

0

O

set cBB=!cb:FOO=BAR!

está funcionando, mas você precisa alterar todas as ocorrências de %variable[:modifier]optional% para usar !…! ; especificamente, você precisa

echo !cB! !cA! !cBB!
    
por 10.10.2015 / 18:15