@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q56171667.txt"
SET "outfile=%destdir%\outfile.txt"
(
FOR /f "usebackqtokens=1*delims=" %%a IN ("%filename1%") DO (
SET "line=%%a"
CALL :lop64
)
)>"%outfile%"
GOTO :EOF
:: remove the first 64 ;-terminated strings from LINE
:: remove remaining `;`
:lop64
SET /a lopoff=64
SET "original=%line%"
:lop64lp
SET "line=%line:*;=%"
SET /a lopoff-=1
IF %lopoff% gtr 0 GOTO lop64lp
CALL ECHO %%original:;%line%=%%;%line:;=%
GOTO :eof
Вам потребуется изменить настройки sourcedir
и destdir
в соответствии с вашими обстоятельствами.
Я использовал файл с именем q56171667.txt
, содержащий некоторые фиктивные данные для моего тестирования.
Создает файл, определенный как% outfile%
Опция usebackq
требуется только потому, что я решил добавить кавычки вокруг имени исходного файла.
Обработка текста в пакете - этоминное поле.Возможно, вам лучше использовать sed
или (g)awk
, предназначенные для этой задачи.
Я предполагаю, что в отсутствие информации иначе, что ваши данные не содержат символов, которые имеют особое значение дляПакетный как %
или "
или &
или |
или <
или >
среди других.
По существу, присвойте всю прочитанную строку как line
, затем в подпрограммезамените ничем для каждой строки до ;
(:*;=
) 64 раза.Затем покажите исходную строку с остатком в line
, замененным ничем , объединенным с ;
и остатком line
с ;
, замененным ничем (:;=
).Если вы хотите использовать запятую вместо точки с запятой, используйте :;=,
здесь.