任何人都可以通过代码帮助我。 我想使用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
来帮助我?
感谢您的帮助!
答案 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