Учитывая, что входной файл не содержит кавычек ("
) и подстановочных знаков (*
, ?
), и при условии, что все поля из входного CSV-файла должны быть переданы в выходной TXTфайл неотредактированный, следующий код может работать для вас:
@echo off
> "text.txt" (
for /F usebackq^ delims^=^ eol^= %%L in ("text.csv") do (
set "LINE=%%L"
setlocal EnableDelayedExpansion
for %%I in ("!LINE:,=" "!") do (
endlocal
echo(%%~I;
setlocal EnableDelayedExpansion
)
endlocal
)
)
REM del "text.csv"
Внутренний цикл for
разделяет строку на каждом ,
.Разрыв строки вставляется неявно с помощью echo
.
. Это альтернативный подход, не использующий for /F
, а перенаправление ввода <
и set /P
для чтения одной строки файла CSV:
@echo off
< "text.csv" > "text.txt" (
setlocal EnableDelayedExpansion
set "LINE=" & set /P LINE=""
if defined LINE (
for %%I in ("!LINE:,=" "!") do (
endlocal
echo(%%~I;
setlocal EnableDelayedExpansion
)
)
endlocal
)
REM del "text.csv"
Кстати, чтобы удалить оригинальный CSV-файл, удалите REM
перед командной строкой del
.