[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [己解决]批处理怎样提取数字并排列?

本帖最后由 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位数字要求小到大顺序排列
1

评分人数

    • zm900612: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 tmplinshi 于 2011-6-23 21:06 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims==" %%i in (' "set # 2>nul" ') do set %%i=
  4. for /f "tokens=4 delims==" %%i in (a.txt) do (
  5.     set n=%%i
  6.     set #!n:~0,4!=#
  7. )
  8. (for /f "delims=#=" %%i in (' set # ') do echo %%i) >b.txt
复制代码

TOP

本帖最后由 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

TOP

把 1楼代码中 第 2 个 for 改成这个。
  1. for /f "delims=" %%i in (a.txt) do (
  2.     set "str=%%i"
  3.     for /f "tokens=2 delims=#" %%a in ("!str: ip=#!") do (
  4.         set "num=%%a"
  5.         set #!num:~1,4!=#
  6.     )
  7. )
复制代码

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims==" %%i in (' "set # 2>nul" ') do set %%i=
  4. for /f "tokens=*" %%i in (a.txt) do (
  5.     set str=%%i
  6.     set str=!str:* ip=!
  7.     set #!str:~1,4!=#
  8. )
  9. (for /f "delims=#=" %%i in (' set # ') do echo %%i) >b.txt
复制代码
1

评分人数

TOP

试过代码很好,只是有个问提,后面加了个=,不知能否解决
2150=
2191=
2214=
2366=
2374=

TOP

2 楼的代码我改过几次。你重新复制下 5 楼的代码试试。

TOP

返回列表