Преобразование файла .txt в CSV с помощью DOS Batch - PullRequest
0 голосов
/ 14 июля 2020

Кто-нибудь может мне помочь с кодом. Я хочу преобразовать файл .txt в csv с помощью пакета dos. Я создал файл bat с приведенным ниже кодом, но он не работает.

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem Define константы здесь:

set "INPUT=C:\New folde(2)\XYZ.txt"
set "OUTPUT=C:\New folder (2)\"

if not defined INPUT exit /B 1
if not defined OUTPUT set "OUTPUT=con"

> "%OUTPUT%" (
    for /F usebackq^ delims^=^ eol^= %%L in ("%INPUT%") do (
        set "LINE=%%L"
        setlocal EnableDelayedExpansion
        echo(!LINE:^|^|=,!
        endlocal
    )
)

endlocal
exit /B

, но это не работает. может ли кто-нибудь помочь мне с точным кодом для преобразования файла txt в csv с помощью командной строки? ценю вашу помощь!

1 Ответ

0 голосов
/ 15 июля 2020

1-й : переменная OUTPUT должна указывать на файл , например, следующим образом:

set "OUTPUT=C:\New folder (2)\"
set "OUTPUT=C:\New folder (2)\XYZ.csv"

2-й : предположим, что вам нужно заменить вертикальные строки запятыми:

@echo OFF
setlocal EnableExtensions DisableDelayedExpansion
rem Define constants here:

set "INPUT=%~1"
set "OUTPUT=%~2"

if not defined INPUT (
    set "INPUT=D:\bat\SO\62897755.txt" 
) else (
    if not defined OUTPUT set "OUTPUT=%~dpn1.csv" 
)
if not defined OUTPUT set "OUTPUT=con:"

echo Converting "%INPUT%" to "%OUTPUT%"

>"%OUTPUT%" (
    for /F usebackq^ delims^=^ eol^= %%L in ("%INPUT%") do (
        set "LINE=%%L"
        setlocal EnableDelayedExpansion
            set "LINE=!LINE:|=,!"
            echo(!LINE!
        endlocal
    )
)

endlocal
exit /B

Исходные файлы ввода и вывода:

type "D:\bat\SO\62897755.txt"
name|no|columnAa|columnBb
abc1|11|columnA1|columnB!
def2|22|columnA2|columnB2
ghi3|33|columnA3|columnB3
type "D:\bat\SO\62897755.csv"
The system cannot find the file specified.

Примеры использования:

D:\bat\SO\62897755.bat
Converting "D:\bat\SO\62897755.txt" to "con:"
name,no,columnAa,columnBb
abc1,11,columnA1,columnB!
def2,22,columnA2,columnB2
ghi3,33,columnA3,columnB3
D:\bat\SO\62897755.bat "D:\bat\SO\62897755.txt" con
Converting "D:\bat\SO\62897755.txt" to "con"
name,no,columnAa,columnBb
abc1,11,columnA1,columnB!
def2,22,columnA2,columnB2
ghi3,33,columnA3,columnB3
D:\bat\SO\62897755.bat ".\SO\62897755.txt"
Converting ".\SO\62897755.txt" to "d:\bat\SO\62897755.csv"
type "D:\bat\SO\62897755.csv"
name,no,columnAa,columnBb
abc1,11,columnA1,columnB!
def2,22,columnA2,columnB2
ghi3,33,columnA3,columnB3
...