标题: [文本处理] [已解决]批处理怎样提取文本每行前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个字符。结果最后发现只输出了一行。
代码是这样写的。- 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
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"
- if "!str:~0,3!"=="86 " set str=!str:~3!
- set str=!str: =!
- echo !str:~0,12!
- )
- pause
复制代码
[ 本帖最后由 随风 于 2011-2-20 20:08 编辑 ]
作者: wc726842270 时间: 2011-2-20 18:50
最后一个FOR是后加的。没看见“然后将每行的12个字符提取出来”- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (set a=%%i&set b=!a: =!
- for %%j in (!b!) do (set q=-%%j& if "!q:~0,3!" equ "-86" (echo !q:-86=!>>1.txt) else (echo !q:-=!>>1.txt)
- )
- )
- for /f "delims=" %%a in (1.txt) do set a=%%a&echo !a:~0,12! >>输出文件.txt
- del 1.txt
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |