Board logo

标题: [文本处理] 批处理怎样实现TXT文档按列对齐或删除? [打印本页]

作者: yonghu123    时间: 2012-3-12 18:10     标题: 批处理怎样实现TXT文档按列对齐或删除?

请大侠帮忙。 有多个TXT 文档,每个文档中数据格式如下(已附图):

2003/10/28        2.41        2.47        2.40        2.46        241838.08        59229412.00
2003/10/29        2.48        2.50        2.43        2.48        382840.31        94298968.00
2003/10/30        2.48        2.48        2.43        2.44        325941.75        80190448.00
2003/10/31        2.42        2.48        2.41        2.46        239708.16        58853128.00
2003/11/03        2.46        2.54        2.43        2.52        436879.34        108911384.00
2003/11/04        2.51        2.64        2.50        2.57        1537652.50        397578432.00
2003/11/05        2.58        2.62        2.57        2.62        1006019.81        261229712.00
2003/11/06        2.62        2.64        2.56        2.58        804865.25        208754784.00
2003/11/07        2.58        2.58        2.52        2.54        665670.38        169572384.00
2003/11/10        2.52        2.57        2.52        2.56        258626.55        65999928.00
2003/11/11        2.56        2.63        2.56        2.60        677383.69        175790720.00

1,如何让数据按列对齐。

2,如果批量删除后两列数据怎么做?

万分感谢!
作者: fatcat    时间: 2012-3-12 19:32

回复 1# yonghu123
  1. @echo off & setlocal enabledelayedexpansion
  2. set "T=          "
  3. >2.txt (
  4.   for /f "delims=" %%l in (1.txt) do (
  5.     for /f "tokens=1-7 delims= " %%a in ("%%l") do (
  6.       set "a=%%a!T!" & set "b=%%b!T!"  & set "c=%%c!T!"  & set "d=%%d!T!"  & set "e=%%e!T!"  & set "f=%%f!T!"
  7.       echo !a:~0,12!!b:~0,8!!c:~0,8!!d:~0,8!!e:~0,8!!f:~0,15!%%g
  8.     )
  9. ))
  10. >3.txt (
  11.   for /f "delims=" %%l in (1.txt) do (
  12.     for /f "tokens=1-5 delims= " %%a in ("%%l") do (
  13.       set "a=%%a!T!" & set "b=%%b!T!"  & set "c=%%c!T!"  & set "d=%%d!T!"
  14.       echo !a:~0,12!!b:~0,8!!c:~0,8!!d:~0,8!%%e
  15.     )
  16. ))
复制代码

作者: yonghu123    时间: 2012-3-12 21:00

感谢回复,

但我将代码保存成批处理文件,将10个txt文件放到同一文件夹下,运行您的程序,
然后出现2.txt 和3.txt 没有其他变化,请问该如何操作,谢谢!
作者: apang    时间: 2012-3-12 21:02

本帖最后由 apang 于 2012-3-12 21:06 编辑

代码保存到txt文件所在文件夹运行,%%a、%%b.......%%g之间的空格请用Tab键替代。
第1问、第2问分别以"源文件名_new1.txt"和"源文件名_new2.txt"形式保存。试试吧。
  1. @echo off
  2. pushd "%~dp0"
  3. for /f "delims=" %%i in ('dir /b *.txt') do (
  4.    for /f "tokens=1-7 delims= " %%a in ('type "%%i"') do (
  5.    echo %%a %%b %%c %%d %%e %%f %%g>>"%%~ni_new1.txt"
  6.    echo %%a %%b %%c %%d %%e>>"%%~ni_new2.txt
  7.    )
  8. )
复制代码

作者: yonghu123    时间: 2012-3-12 21:35

抱歉啊,我按要求改了,但运行后打开文档提示  

ECHO 处于关闭状态

不好意思对批处理非常不懂,我已将10个样例的文件上传,请大侠帮我测试一下
如果可以能否将批处理文件上传,谢谢!

【需要修改的文件样例 大小 400k】

http://kuai.xunlei.com/d/KHFKUKTNEAPO

http://good.gd/1971752.htm

论坛附件无法上传,我传到网盘了。
作者: find    时间: 2012-3-12 22:11

回复 5# yonghu123


只留下个三行五行的,就能传到论坛上来了。
作者: find    时间: 2012-3-12 22:20

1:
  1. gawk "BEGIN{OFS=\"\t\"}{$1=$1}1" a.txt >b.txt
复制代码

作者: find    时间: 2012-3-12 22:21

2:
  1. gawk "{NF-=2}1" a.txt >b.txt
复制代码

作者: yonghu123    时间: 2012-3-12 22:31

1:
find 发表于 2012-3-12 22:20


打扰您了,将代码运行,出现b.txt ,没有变化,能不能加我QQ,(已发短消息)

非常感谢。
作者: apang    时间: 2012-3-12 22:33

代码上传了,楼主试试。
作者: find    时间: 2012-3-12 22:38

回复 9# yonghu123


你有gawk.exe吗?
有问题请直接回帖,不要发消息。
作者: yonghu123    时间: 2012-3-12 22:41

非常感谢两位,再次感谢 apang,谢谢。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2