У меня есть файл, подобный следующему:
001;0009;024;165748;0634;;CAPO;
001;0009;030;143366;0633;;CAPO;
001;0009;030;160671;0644;31/05/2018;PART;
001;0009;030;160857;0644;;PART;
001;0009;031;168135;0644;;PART;
001;0009;046;168085;0612;;CAPO;
002;0002;007;286169;4013;21/03/2018;PART;
002;0002;009;053175;4013;;PART;
002;0002;026;241075;4023;01/02/2018;PART;
002;0002;026;241076;4023;01/02/2018;PART;
002;0002;026;241102;4023;;PART;
Мне нужно создать несколько файлов, которые будут разбиты при изменении первых 3 символов, каждый из которых будет именоваться 3 первыми символами.Итак, следуя примеру, у меня будет
001.txt с
001;0009;024;165748;0634;;CAPO;
001;0009;030;143366;0633;;CAPO;
001;0009;030;160671;0644;31/05/2018;PART;
001;0009;030;160857;0644;;PART;
001;0009;031;168135;0644;;PART;
001;0009;046;168085;0612;;CAPO;
002.txt с
002;0002;007;286169;4013;21/03/2018;PART;
002;0002;009;053175;4013;;PART;
002;0002;026;241075;4023;01/02/2018;PART;
002;0002;026;241076;4023;01/02/2018;PART;
002;0002;026;241102;4023;;PART;
Я частично достиг этого с помощью этого пакета:
@@echo off
setlocal ENABLEDELAYEDEXPANSION
@echo Wait please...
set header=field1;field2;field3;field4;field5;field6;field7;field8
set craold=""
set cranow=""
FOR /F "eol=; tokens=1,* delims=;" %%a in (myfilename.csv) do call :doTheWork %%a %%b
@echo Ended
pause
GOTO :EOF
:doTheWork
set cranow=%1
IF NOT !craold!==!cranow! (
call :createFile %cranow%
set craold=!cranow!
)
set recfilename=%craold%.txt
@echo %1;%2 >> %recfilename%
GOTO :END
:createFile
set myfilename=%1.txt
@echo %header% > %myfilename%
@echo CRA: %1
GOTO :END
:END
Моя проблема в том, что в моих файлах я нахожу только это:
001.txt с
field1;field2;field3;field4;field5;field6;field7;field8
001;0009
001;0009
001;0009
001;0009
001;0009
001;0009
002.txt с
field1;field2;field3;field4;field5;field6;field7;field8
002;0002
002;0002
002;0002
002;0002
002;0002
Кажется, что "eol =; tokens = 1, * delims =;"не работает правильно, забывая, что второй параметр прагмы "tokens" должен занимать оставшуюся часть строки ввода.Зачем?Предложения?
Спасибо!