中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 18:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]截取然后替换 查看 819 回复 10
楼 主 [求助]截取然后替换 发表于 2009-04-21 01:11 ·  中国 辽宁 沈阳 联通
新手上路
积分 11
发帖 11
注册 2009-04-19 08:22
17年会员
UID 143282
性别 男
状态 离线
有一堆网页文件,每个网页文件都含有一个<h1>aaaaa</h1>标记,aaaaa有四种类型 :
1.精装版《机械工程控制基本理论》西安交大出版社
2.(机械工程控制基本理论)西安交大出版社
3.机械工程控制基本理论(西安交大出版社)
4.机械工程控制基本理论


现在我想做的是
(1)如果aaaaa是类型1,把书名号中的内容(不包括书名号)替换此网页中的
<code>点击查看<a href=http://{$url}>书籍名称</a>内容</code>
中的"书籍名称"
(2)如果aaaaa是类型2,把括号中的内容(不包括括号)替换替换此网页中的
<code>点击查看<a href=http://{$url}>书籍名称</a>内容</code>
中的"书籍名称"
(3)如果aaaaa是类型3,去掉括号中的内容以及括号,然后把剩下的内容替换替换此网页中的
<code>点击查看<a href=http://{$url}>书籍名称</a>内容</code>
中的"书籍名称"
(4)如果aaaaa是类型4,直接把内容替换就可以

请问用使用FR.EXE批处理如何实现自动判断网页是以上那种类型并且实现全自动批量替换(直接在源文件上改,不需要生成新的文件)
2 发表于 2009-04-21 01:48 ·  中国 辽宁 沈阳 联通
新手上路
积分 11
发帖 11
注册 2009-04-19 08:22
17年会员
UID 143282
性别 男
状态 离线
有人帮帮我么~~ 麻烦大家了
3 发表于 2009-04-21 02:08 ·  中国 湖北 黄石 电信
中级用户
★★
积分 330
发帖 244
注册 2006-04-14 14:07
20年会员
UID 53823
性别 男
来自 湖北
状态 离线
书籍名都一样,用sed很方便

sed "s/>书籍名称</>机械工程控制基本理论</g" a.htm
附件
sed.rar (40.33 KiB, 下载次数: 6)
4 Re 3楼 发表于 2009-04-21 02:26 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
建议不要重复上传附件,太浪费论坛空间了:)
批处理室附件收集专用帖http://www.cn-dos.net/forum/viewthread.php?tid=25914
5 发表于 2009-04-21 02:27 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
没全明白,迷糊。
把原文件传上来看看

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
6 发表于 2009-04-21 02:54 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
我很懒就大概的写一个样子,正则表达式写得不是很精确。

for /f "tokens=1* delims=" %%a in ('fr xx.html -rnnlic:".*<h1>.+《(.+)》.*</h1>.*" -t:"\1" -stdout') do (
echo 得到类型1书名: %%a
fr -f:"书籍名称" -t:"%%a" xx.html
)

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
7 发表于 2009-05-10 00:21 ·  中国 江西 联通
新手上路
积分 11
发帖 11
注册 2009-04-19 08:22
17年会员
UID 143282
性别 男
状态 离线
yishanju大哥的批处理很棒,但有个很大的问题,我把批处理改成
for /f "tokens=1* delims=" %%a in ('fr *.html -rnnlic:".*<h1>.+《(.+)》.*</h1>.*" -t:"\1" -stdout') do (
echo 得到类型1书名: %%a
fr -f:"书籍名称" -t:"%%a" *.html
)

今天把批处理拿到学校机房用的时候,处理一批文件时,批处理首先会遍历所有的HTML文件,然后把找到的每个HTML文件所有的%%a写入每个HTML里面,结果造成每个HTML文件里面都有所有HTML文件里的书名,应该怎么改使批处理处理完第一个文件后,然后处理第二个,不会相互影响

[ Last edited by 5600549976 on 2009-5-10 at 00:22 ]
8 发表于 2009-05-10 01:57 ·  中国 江西 联通
新手上路
积分 11
发帖 11
注册 2009-04-19 08:22
17年会员
UID 143282
性别 男
状态 离线
yishanju大哥还在吗
9 发表于 2009-05-10 04:36 ·  中国 湖北 黄石 电信
新手上路
积分 11
发帖 11
注册 2009-04-19 08:22
17年会员
UID 143282
性别 男
状态 离线
还有谁能帮帮我吗,麻烦大家了
10 发表于 2009-05-10 07:04 ·  中国 北京 联通
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
20年会员
UID 55770
状态 离线
我脑袋就大了,我给的代码是处理单个文件的
处理多文件需要在外面加一层FOR 得到文件名。

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
11 发表于 2009-05-10 09:59 ·  中国 湖北 黄石 电信
新手上路
积分 11
发帖 11
注册 2009-04-19 08:22
17年会员
UID 143282
性别 男
状态 离线

处理多文件需要在外面加一层FOR 得到文件名


这么一说就懂了,3Q
论坛跳转: