Board logo

标题: [文本处理] [已解决]批处理怎样提取文本每行前12个字符? [打印本页]

作者: Bearxy    时间: 2011-2-20 18:19     标题: [已解决]批处理怎样提取文本每行前12个字符?

我昨天看了论坛的FOR教程。今天就碰到个问题,结果弄了大半个下午,什么都没做成。现在请大家帮一下忙,谢谢了。

有一个文本文档a.txt,内容为:
076088580029
86 0760 22341995 86 0760 22341995
076922452078
0760076022703979
076087721560
076085324980
0760
076022219696
07603331676
076088391223
…………
…………
…………
很多个,现在需要将此文本每行的前“86”,和其中每行的空格去掉。然后将每行的12个字符提取出来,输出到另外一个文本文档里。请问一下该如何写。

我自己的思路是这样的,先去掉所有的空格,然后利用delims=空格,提取这个空格前的内容。
因为每行刚好是12个字符。结果最后发现只输出了一行。
代码是这样写的。
  1. for /f "tokens=1-5 delims=" %%i in (a.txt) do echo %%i %%m %%y %%j %%k
复制代码
我新学的,请不要笑我哈。

[ 本帖最后由 Bearxy 于 2011-2-20 22:22 编辑 ]
作者: 随风    时间: 2011-2-20 18:49

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.    set "str=%%i"
  4.    if "!str:~0,3!"=="86 " set str=!str:~3!
  5.    set str=!str: =!
  6.    echo !str:~0,12!
  7. )
  8. pause
复制代码

[ 本帖最后由 随风 于 2011-2-20 20:08 编辑 ]
作者: wc726842270    时间: 2011-2-20 18:50

最后一个FOR是后加的。没看见“然后将每行的12个字符提取出来”
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (set a=%%i&set b=!a: =!
  3.    for %%j in (!b!) do (set q=-%%j& if "!q:~0,3!" equ "-86" (echo !q:-86=!>>1.txt) else (echo !q:-=!>>1.txt)
  4.   )
  5. )
  6. for /f "delims=" %%a in (1.txt) do set a=%%a&echo !a:~0,12! >>输出文件.txt
  7. del 1.txt
  8. pause
复制代码

[ 本帖最后由 wc726842270 于 2011-2-20 18:55 编辑 ]
作者: wc726842270    时间: 2011-2-20 18:57

有个问题请教一下。SET能获得"123467……"中的"34567……“么?希望比我上面的方法方便些
作者: Batcher    时间: 2011-2-20 19:20     标题: 回复 2楼 的帖子

是把行首的86删掉,不是把以86开头的行删掉吧?
作者: Batcher    时间: 2011-2-20 19:25     标题: 回复 4楼 的帖子

批处理set命令截取字符详解
http://bbs.bathome.net/thread-996-1-1.html

批处理set命令变量字符截取点点通
http://bbs.bathome.net/thread-40-1-1.html
作者: wc726842270    时间: 2011-2-20 19:32     标题: 回复 6楼 的帖子

多谢了.看来试验的次数还是少了些.一开始我以为是%var:~3,%呢.看过之后才发现是
%var:~3%(有点仿正则了.呵呵)

[ 本帖最后由 wc726842270 于 2011-2-20 19:33 编辑 ]
作者: Bearxy    时间: 2011-2-20 19:58     标题: 回复 3楼 的帖子

刚去测试了,我在论坛找了一个去除所以空格和空行的代码。
然后再加上大哥你的代码,效果非常好。

感谢!!
作者: 随风    时间: 2011-2-20 20:09     标题: 回复 5楼 的帖子

确实,太大意了,以修改。




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