找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24107|回复: 6

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

[复制链接]
发表于 2011-6-23 20:07:24 | 显示全部楼层 |阅读模式
本帖最后由 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位数字要求小到大顺序排列

评分

参与人数 1PB +2 收起 理由
zm900612 + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2011-6-23 20:53:41 | 显示全部楼层
本帖最后由 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
复制代码
 楼主| 发表于 2011-6-23 21:22:14 | 显示全部楼层
本帖最后由 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
发表于 2011-6-23 21:34:12 | 显示全部楼层
把 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. )
复制代码
发表于 2011-6-23 21:54:07 | 显示全部楼层
  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
复制代码

评分

参与人数 1PB +2 收起 理由
zm900612 + 2 乐于助人

查看全部评分

 楼主| 发表于 2011-6-23 22:13:23 | 显示全部楼层
试过代码很好,只是有个问提,后面加了个=,不知能否解决
2150=
2191=
2214=
2366=
2374=
发表于 2011-6-23 22:30:17 | 显示全部楼层
2 楼的代码我改过几次。你重新复制下 5 楼的代码试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 20:42 , Processed in 0.023749 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表