使用DOS Batch将.txt文件转换为CSV

时间:2020-07-14 14:43:20

标签: command-prompt

任何人都可以通过代码帮助我。 我想使用dos batch将.txt文件转换为csv。我用下面的代码创建了一个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

但这不起作用。谁能用cmd提示将确切的代码txt转换为csv来帮助我? 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

第一:变量OUTPUT指向文件,例如如下:

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

第二个:假设您需要用逗号替换垂直线:

@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