[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

用楼主在4楼提供的样本(存为:样本3行.txt)练了一把纯P脑力操,代码如下存为test.bat
先用字符串替换函数把源文收拾利索,再丢给 for/f 分割器逐项扫描.. 幸亏有变量名字典作为遍历回查存储器,使得代码轻量化...
再用7楼提供的样本文件(下载保存为:样本462行.txt)运行结果输出4370行一楼所求格式化数据,行内分割符为制表符
     test.bat "样本3行.txt">"样本3行.new"

     test.bat "样本462行.txt">"样本462行.new"
  1. @echo off
  2. for /f "tokens=1* delims= " %%1 in (%1) do (
  3. setlocal enabledelayedexpansion
  4. set "dn=0" &set "nq=%%1" &set "s=%%2;z" &set "s=!s:*{=!"
  5. for %%c in ( [,],{,} ) do (set "s=!s:%%c=!")
  6. for %%a in (!s!) do (
  7. set "v=%%a" &set "v1=!v:~,1!"
  8. if "!v1!" geq "0" if "!v1!" leq "9" (
  9. for %%k in (!n!) do (set "_%%k=!_%%k! !v!")
  10. set "lastD=!v!" &set/a "dn+=1"
  11. ) else (
  12. if !dn! equ 3 (set "nmax=!nmax! !n!") else if !dn! equ 4 (
  13. if defined nmax for %%k in (!nmax!) do (echo,!_%%k! !lastD!)
  14. for %%k in (!n!) do (echo,!_%%k!)
  15. set "n=0" &set "nmax="
  16. )
  17. set/a "n+=1, dn=0" & set "_!n!=!nq! !v!"
  18. )
  19. )
  20. endlocal
  21. )
  22. exit/b
复制代码

TOP

返回列表