标题: [文本处理] 【已解决】BAT:一列数据如何按规律重组 [打印本页]
作者: 思想之翼 时间: 2014-3-29 13:25 标题: 【已解决】BAT:一列数据如何按规律重组
本帖最后由 思想之翼 于 2014-3-29 15:30 编辑
txt文本有一列0-9之间的数据,共12600行,欲按下列规律将该列数据重组:
第1行&第2行 第3行&第4行 第5行&第6行 ... 第29行&第30行
第31行&第32行 第33行&第34行 第35行&第36行 ... 第59行&第60行
第61行&第62行 第63行&第64行 第65行&第66行 ... 第89行&第90行
... ... 第59行&第12600行
重组后的数据为文本格式(可以显示00 01),共15列420行,列与列之间的空格为Tab
作者: apang 时间: 2014-3-29 14:01
本帖最后由 apang 于 2014-3-29 22:03 编辑
- @echo off & setlocal enabledelayedexpansion
- for /f "delims=g" %%a in ('cmd /u /c echo,有') do set "Tab=%%a"
- (for /f "delims=" %%a in (1.txt) do (
- set "strOld=!strNew!" & set "strNew=%%a"
- set /a n+=1,m=n%%2,k=n%%30
- if "!m!"=="0" set /p=!strOld!^&!strNew!%Tab%<nul
- if "!k!"=="0" echo,
- ))>2.txt
- pause
复制代码
整复杂了,改一下,呵呵
作者: 思想之翼 时间: 2014-3-29 14:32
本帖最后由 思想之翼 于 2014-3-29 15:29 编辑
回复 2# apang
感谢您的帮助!解决问题。
作者: xxpinqz 时间: 2014-3-29 14:41
貌似未定义strOld时,n需要为1才对吧。否则第一次m=0时,好像已取值到第3行了
作者: apang 时间: 2014-3-29 14:57
回复 4# xxpinqz
确实,感谢提醒
作者: terse 时间: 2014-3-30 00:30
修改下2楼 效率稍提高点- @echo off&setlocal enabledelayedexpansion
- for /f "delims=g" %%a in ('cmd /u /c echo,有') do set "Tab=%%a"
- (for /f %%i in (1.txt) do (
- if defined str (
- set "var=!var!%Tab%!str!&%%i"
- set "str="
- ) else set "str=%%i"
- set /a n+=1,m=n%%30
- if "!m!" == "0" echo!var!&set "var="
- )
- if defined var echo!var!
- )>2.txt
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |