标题: [文本处理] [已解决]批处理如何按照班级进行文本提取? [打印本页]
作者: 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
- @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('type "班级名册.txt"') do (
- set "str=%%a"
- set s=!s!"%%a";
- if "!str:~,2!" equ "班级" ((
- for %%i in (!s!) do set "t=%%i" & echo,!t:~1,-1!
- echo,
- )>>"!str:~3!.txt"
- set s=
- ))
- 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 - @echo off
- setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('type "班级名册.txt"') do (
- set "str=%%a"
- set s=!s!"%%a";
- if "!str:~,2!" equ "班级" ((
- for %%i in (!s!) do (
- set "t=%%i"
- if "!t:~1,2!" equ "姓名" (echo,!t:~1,-1!
- ) else if "!t:~1,2!" equ "年龄" (echo,!t:~1,-1!)
- )
- echo,
- )>>"!str:~3!.txt"
- set s=
- ))
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |