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

[文本处理] [已解决]批处理如何按照班级进行文本提取?

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

评分人数

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

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

TOP

回复 2# zcydez


    感谢您指点。。。

TOP

  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
复制代码
1

评分人数

TOP

回复 4# pcl_test


    感谢您代码,运行有效

TOP

回复 4# pcl_test


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

姓名:王品牌
年龄:13

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

3.txt
姓名:高龙
年龄:6
。。。
不好意思,给您添麻烦了。。。

TOP

回复 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
复制代码
1

评分人数

TOP

返回列表