用楼主在4楼提供的样本(存为:样本3行.txt)练了一把纯P脑力操,代码如下存为test.bat
先用字符串替换函数把源文收拾利索,再丢给 for/f 分割器逐项扫描.. 幸亏有变量名字典作为遍历回查存储器,使得代码轻量化...
再用7楼提供的样本文件(下载保存为:样本462行.txt)运行结果输出4370行一楼所求格式化数据,行内分割符为制表符
test.bat "样本3行.txt">"样本3行.new"
或
test.bat "样本462行.txt">"样本462行.new"- @echo off
- for /f "tokens=1* delims= " %%1 in (%1) do (
- setlocal enabledelayedexpansion
- set "dn=0" &set "nq=%%1" &set "s=%%2;z" &set "s=!s:*{=!"
- for %%c in ( [,],{,} ) do (set "s=!s:%%c=!")
- for %%a in (!s!) do (
- set "v=%%a" &set "v1=!v:~,1!"
- if "!v1!" geq "0" if "!v1!" leq "9" (
- for %%k in (!n!) do (set "_%%k=!_%%k! !v!")
- set "lastD=!v!" &set/a "dn+=1"
- ) else (
- if !dn! equ 3 (set "nmax=!nmax! !n!") else if !dn! equ 4 (
- if defined nmax for %%k in (!nmax!) do (echo,!_%%k! !lastD!)
- for %%k in (!n!) do (echo,!_%%k!)
- set "n=0" &set "nmax="
- )
- set/a "n+=1, dn=0" & set "_!n!=!nq! !v!"
- )
- )
- endlocal
- )
- exit/b
复制代码
|