从 Windows 中的批处理脚本向 txt 文件添加定界符

Add delimiter to txt file from batch script in Windows

我有一个 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

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

这可能吗?

提前致谢!

@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%

的文件

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

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

本质上,构建字符串 magic 作为适当的子字符串命令,根据需要串在一起到 assemble 输出行。对于文件中的每一行,执行 magic 命令和 echo 结果。