从Windows

时间:2016-09-23 17:30:58

标签: database csv batch-file delimiter

我有一个text.txt文件,其中填充了未用分隔符分隔的数据。我需要根据文本文件中的列添加分隔符。

目前的数据似乎是

00067800000000000000000000N00006N 00000125463150050000012546315012
00067800000000000000000000N00006N 00000125463150810000012546315098

我需要在文本的特定列添加一个分隔符,例如“,”,所以它看起来像。

000678,0000000,000000,0000000,N,00006,N, ,00000,12546315005,00000,12546,315012
000678,0000000,000000,0000000,N,00006,N, ,00000,12546315081,00000,12546,315098

我想创建一个批处理文件,并在文件中的每一行都需要它的每一列添加分隔符。

这可能吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
SET "filename1=%sourcedir%\q39666479.txt"
SET "outfile=%destdir%\outfile.txt"

:: set delimiter and read column-sizes from supplied command-line
SET "delimiter=,"
CALL :colsize %*

(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
 SET "line=%%a"
 CALL :report
)
)>"%outfile%"

GOTO :EOF

:colsize
SET "magic="
:: offset position
SET /a size=0
:colsizelp
IF DEFINED magic (
 SET "magic=%magic%%delimiter%`line:~%size%,%1`"
) ELSE (
 SET "magic=`line:~%size%,%1`"
)
SET /a size +=%1
SHIFT
IF "%1" neq "" GOTO colsizelp
SETLOCAL enabledelayedexpansion
SET "magic=!magic:`=%%!"
endlocal&SET "magic=set "line=%magic%""
GOTO :eof

:report
CALL %magic%
ECHO %line%
GOTO :eof

您需要更改sourcedirfilename1destdir的设置以适应您的具体情况。

我使用了一个名为q39666479.txt的文件,其中包含我的测试数据。

生成定义为%outfile%

的文件

thisbatchname 运行6,7,6,7,1,5,1,1,5,11,5,5,6

产生上述结果。每个数字都是列宽。

基本上,将字符串magic构建为适当的子串命令,以便根据需要组合输出行。对于文件中的每一行,执行magic命令并echo结果。