标题: [文本处理] [己解决]批处理怎样提取数字并排列? [打印本页]
作者: keshun 时间: 2011-6-23 20:07 标题: [己解决]批处理怎样提取数字并排列?
本帖最后由 keshun 于 2011-6-24 01:41 编辑
请教高手,看我这要求批处理能否做到,程序该怎么编写?
a.txt文本内容
name=敏 datestop=2011-03-17 ip=2374敏 active=yes prio=0
name=柯昌 datestop=2011-03-11 ip=2150柯昌 prio=0 active=yes
name=超 datestop=2011-03-08 ip=2191超 prio=0 active=yes
name=蒋芳 datestop=2011-03-27 ip=2214蒋芳 prio=0 active=yes
name=李滨 datestop=2011-03-12 ip=2366李滨 prio=0 active=yes
批处理对a.txt进行处理输出到b.txt
b.txt内容要求是
2150
2191
2214
2366
2374
注:b.txt的4位数字要求小到大顺序排列
作者: tmplinshi 时间: 2011-6-23 20:53
本帖最后由 tmplinshi 于 2011-6-23 21:06 编辑
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims==" %%i in (' "set # 2>nul" ') do set %%i=
- for /f "tokens=4 delims==" %%i in (a.txt) do (
- set n=%%i
- set #!n:~0,4!=#
- )
- (for /f "delims=#=" %%i in (' set # ') do echo %%i) >b.txt
复制代码
作者: keshun 时间: 2011-6-23 21:22
本帖最后由 keshun 于 2011-6-23 21:23 编辑
谢谢版主,上面代码运行正常。只有还有一个特殊情况,就是a.txt内容竖列不规范的时候,读取会出错。
如果a.txt内容如下,代码又该怎么编写。
a.txt文本内容
name=敏 datestop=2011-03-17 ip=2374敏 active=yes prio=0
name=柯昌 datestop=2011-03-11 ip=2150柯昌 prio=0 active=yes
name=超 ip=2191超 datestop=2011-03-08 prio=0 active=yes
name=蒋芳 datestop=2011-03-27 prio=0 ip=2214蒋芳 active=yes
name=李滨 datestop=2011-03-12 ip=2366李滨 prio=0 active=yes
作者: caruko 时间: 2011-6-23 21:34
把 1楼代码中 第 2 个 for 改成这个。- for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"
- for /f "tokens=2 delims=#" %%a in ("!str: ip=#!") do (
- set "num=%%a"
- set #!num:~1,4!=#
- )
- )
复制代码
作者: tmplinshi 时间: 2011-6-23 21:54
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims==" %%i in (' "set # 2>nul" ') do set %%i=
- for /f "tokens=*" %%i in (a.txt) do (
- set str=%%i
- set str=!str:* ip=!
- set #!str:~1,4!=#
- )
- (for /f "delims=#=" %%i in (' set # ') do echo %%i) >b.txt
复制代码
作者: keshun 时间: 2011-6-23 22:13
试过代码很好,只是有个问提,后面加了个=,不知能否解决
2150=
2191=
2214=
2366=
2374=
作者: tmplinshi 时间: 2011-6-23 22:30
2 楼的代码我改过几次。你重新复制下 5 楼的代码试试。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |