Board logo

标题: [文本处理] [已解决]批处理如何按照班级进行文本提取? [打印本页]

作者: wangdao6699    时间: 2015-4-19 14:17     标题: [已解决]批处理如何按照班级进行文本提取?

本帖最后由 wangdao6699 于 2015-4-19 16:54 编辑

记事本内容:
姓名:王朗
年龄:13
性别:女
身高:120
成绩:80
班级:1

姓名:高空
年龄:6
性别:男
身高:90
成绩:86
班级:2

姓名:王品牌
年龄:13
性别:女
身高:120
成绩:80
班级:1

姓名:高龙
年龄:6
性别:男
身高:90
成绩:86
班级:3

。。。。。。。。

一共有3个班级,根据班级,将对应内容,保存到各个班级
如1.txt
姓名:王朗
年龄:13
性别:女
身高:120
成绩:80
班级:1

姓名:王品牌
年龄:13
性别:女
身高:120
成绩:80
班级:1

2.txt
姓名:高空
年龄:6
性别:男
身高:90
成绩:86
班级:2

3.txt
姓名:高龙
年龄:6
性别:男
身高:90
成绩:86
班级:3
.。。。。。
作者: zcydez    时间: 2015-4-19 15:27

可以试试用for命令逐行读取文本并存入临时变量中,读到空行即判断一小节结束,再根据读入的班级写出到相应文本文件即可。
作者: wangdao6699    时间: 2015-4-19 15:40

回复 2# zcydez


    感谢您指点。。。
作者: pcl_test    时间: 2015-4-19 15:43

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('type "班级名册.txt"') do (
  4. set "str=%%a"
  5. set s=!s!"%%a";
  6. if "!str:~,2!" equ "班级" ((
  7. for %%i in (!s!) do set "t=%%i" & echo,!t:~1,-1!
  8. echo,
  9. )>>"!str:~3!.txt"
  10. set s=
  11. ))
  12. pause
复制代码

作者: wangdao6699    时间: 2015-4-19 15:58

回复 4# pcl_test


    感谢您代码,运行有效
作者: wangdao6699    时间: 2015-4-21 10:52

回复 4# pcl_test


    假如只提取姓名,年龄,效果如下(试了几次都不。。。)
请问如何修改
    如1.txt
姓名:王朗
年龄:13

姓名:王品牌
年龄:13

2.txt
姓名:高空
年龄:6

3.txt
姓名:高龙
年龄:6
。。。
不好意思,给您添麻烦了。。。
作者: pcl_test    时间: 2015-4-21 12:20

回复 7# wangdao6699
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('type "班级名册.txt"') do (
  4. set "str=%%a"
  5. set s=!s!"%%a";
  6. if "!str:~,2!" equ "班级" ((
  7. for %%i in (!s!) do (
  8. set "t=%%i"
  9. if "!t:~1,2!" equ "姓名" (echo,!t:~1,-1!
  10. ) else if "!t:~1,2!" equ "年龄" (echo,!t:~1,-1!)
  11. )
  12. echo,
  13. )>>"!str:~3!.txt"
  14. set s=
  15. ))
  16. pause
复制代码





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