
Я хочу проанализировать таблицу в текстовом файле, изменить порядок некоторых столбцов и внести небольшие изменения. Я использую цикл FOR в BAT-файле командного процессора.
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 ()
?
решение1
The
set cBB=!cb:FOO=BAR!
работает, но вам нужно изменить все вхождения на использование ; в частности, вам нужно%variable[:modifier]optional%
!…!
echo !cB! !cA! !cBB!