中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-12 16:03
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教一个按文本分割的问题 查看 821 回复 2
楼 主 请教一个按文本分割的问题 发表于 2010-03-22 14:53 ·  中国 浙江 宁波 电信
新手上路
积分 7
发帖 7
注册 2010-03-09 01:19
16年会员
UID 161843
性别 男
状态 离线
看到坛子里wydos老师有个分割章节的列子

@echo off
setlocal ENABLEDELAYEDEXPANSION
title wydos制作
for /f "tokens=1,*" %%i in (test.txt) do (
set a=%%i
set l=!a:~0,1!!a:~-1!
if !l!==第章 set filename=%%i
echo %%i %%j>>!filename!.txt
)
endlocal

用来分割章节

第一章 入狱少年

就这样城北监狱迎来了他的新客人一个19岁的杀人犯――萧天。
第二章 入狱检查

就成了省里关押重型犯的唯一监狱,凡是在这里服刑的人员,都是曾经在社会上惹起腥风血雨的人物。
第三章 南北大院

城北监狱以中心操场篮球场人为分成两个大院,南院和北院。

第四章 李东其人

萧天、李东、张刚和王森四人被一个管教领着和其他人分开后,就朝着南院走去。一路“咣锒――咣锒”的脚镣声伴着四人向监狱的深处走去。

---------------------------------------------------------------------


我遇到的一个分割情况是一个固定的分割符字符,借用上面的情况



我是分割符123

“现本席宣判萧天,男,19岁,东北财经大学学生,于1998年5月4日谋杀中国籍男子李英男,……判有期徒刑20年,剥夺政治权利5年……”
站在被告席上的萧天漠然的听着法庭对他的判决,似乎所一切都与他无关似的。一米七高的身材衬托的是与他19岁年龄不相称的冷静。
一个是曾经身为武警23岁的李东,在一次执行任务过程中,因战友被犯罪分子杀害,一时愤怒开枪打死了被害战友身边所有的人,其中包括两个无辜的民工,被判入狱15年。
萧天不顾两人诧异的目光又望着窗外,黑漆漆的城北监狱大门缓缓打开,就这样城北监狱迎来了他的新客人一个19岁的杀人犯――萧天。
我是分割符456

城北监狱始建于60年代末,原来只是H市的一个看守所,后来随着犯罪人数的增多,逐步改建成监狱。80年代初,城北监狱正式“挂牌”成立。后随着改革开放,在中央“严打”整治过程中,关押一批刑法较重的罪犯。而后这里逐渐就成了省里关押重型犯的唯一监狱,凡是在这里服刑的人员,都是曾经在社会上惹起腥风血雨的人物。
我是分割符789

--------------------
以上以“我是分割符”作为标记进行文件分割,文件命名方式也如原wydos老师的例子。请教在基础上该做哪些修改?
2 发表于 2010-03-22 15:23 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
17年会员
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
set l=!a:~0,1!!a:~-1!
if !l!==第章 set filename=%%i

这里改成
if "!a:~0,5!"=="我是分割符" set filename=%%i
如果以"我是分割符789"为文本名,则 set filename=%%i
如果以"789"为文本名,则 set filename=!a:~5!

例如:
@echo off&setlocal ENABLEDELAYEDEXPANSION
(for /f "tokens=1,*" %%a in (test.txt) do (
set a=%%a&if "!a:~0,5!"=="我是分割符" set f=!a:~5!.txt
echo %%a %%b))>>!f!


[ Last edited by Hanyeguxing on 2010-3-22 at 15:31 ]
3 发表于 2010-03-22 15:34 ·  中国 浙江 宁波 电信
新手上路
积分 7
发帖 7
注册 2010-03-09 01:19
16年会员
UID 161843
性别 男
状态 离线
感谢孤星 解决了我的问题

看了你的解释,终于有点明白%%和~的大概意思了。。。
论坛跳转: