Полагаю, вы не совсем поняли, что такое "жетоны".Первый токен установлен на данную переменную (%%a
), следующие токены назначены (в алфавитном порядке) следующим переменным (%%b
, %%c
, ...).Вам нужно изменить девятый токен (%%i
), поэтому вам нужно получить токены с 1 по 9 и *
для «остальных».Также ваш неправильный разделитель (ваш текстовый файл имеет ;
, поэтому вам нужно delims=;
)
@echo off
setlocal enableextensions enabledelayedexpansion
(for /f "skip=4 tokens=1-9* delims=;" %%a in (input.csv) do (
if "%%i"=="#" (set "data=") else (set "data=%%i")
echo(%%a;%%b;%%c;%%d;%%e;%%f;%%g;%%h;!data!;%%j
)) > output.csv
endlocal
(Конечно, вы также можете начать с %%f
, но тогда ваш девятый токен будет %%n
- легче читать, когда вы начинаете с a
)
Имейте в виду, последовательные разделители рассматриваются как единое целое.Так что если у вас есть пустые поля (...;text;;text;...
), ваш токенизация становится дикой.