从 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
您需要更改 sourcedir
、filename1
和 destdir
的设置以适合您的情况。
我使用了一个名为 q39666479.txt
的文件,其中包含您的数据用于我的测试。
生成定义为 %outfile%
的文件
运行 as thisbatchname 6,7,6,7,1,5,1,1,5,11,5,5,6
产生上述结果。每个数字只是列宽。
本质上,构建字符串 magic
作为适当的子字符串命令,根据需要串在一起到 assemble 输出行。对于文件中的每一行,执行 magic
命令和 echo
结果。
我有一个 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
您需要更改 sourcedir
、filename1
和 destdir
的设置以适合您的情况。
我使用了一个名为 q39666479.txt
的文件,其中包含您的数据用于我的测试。
生成定义为 %outfile%
的文件运行 as thisbatchname 6,7,6,7,1,5,1,1,5,11,5,5,6
产生上述结果。每个数字只是列宽。
本质上,构建字符串 magic
作为适当的子字符串命令,根据需要串在一起到 assemble 输出行。对于文件中的每一行,执行 magic
命令和 echo
结果。