中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何替换html文件中的链接
作者:
标题: [已结]如何替换html文件中的链接 上一主题 | 下一主题
samuel
初级用户





积分 22
发帖 9
注册 2007-12-28
状态 离线
『楼 主』:  [已结]如何替换html文件中的链接

我要在html文件中的href=“/后追加一部分固定的字符串如:将href=“/abc.html" 改为href=“/aaa/abc.html" 我用set处理时发现 1、原字符串中的 = " 都需要转义,否则没法正确替换; 2、新文件里的中文都是乱码 下面是我写的代码,请大侠们指点,不胜感激!:) --------------------------- @echo off for /f "delims=" %%i in ('dir /a /b /s *.html') do ( for /f "delims=" %%a in (%%i) do ( set var=%%a set "var=!var:%%href="/=href=”/aaa/%%!" echo !var!>>%%i.txt ) del %%i ren "%%i.txt" %%i ) --------------------- [ Last edited by samuel on 2008-1-1 at 07:46 PM ]


2007-12-31 12:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 2 楼』:  

sed "s/\(href=\x22\)\(.*\.html\x22\)/\1aaa\2/g" test.html [ Last edited by junchen2 on 2007-12-31 at 12:55 PM ]


2007-12-31 12:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
samuel
初级用户





积分 22
发帖 9
注册 2007-12-28
状态 离线
『第 3 楼』:  这是什么原因?

sed: couldn't write 126 items to stdout: Invalid argument


2007-12-31 17:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 4 楼』:  

测试文件贴出来看看


2008-1-1 00:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
samuel
初级用户





积分 22
发帖 9
注册 2007-12-28
状态 离线
『第 5 楼』:  

就是下面这个主页 www.panjueshu.com/ 我要在里面有 href="/ href=‘/ href=/ 的/ 前加上个. 变成href="./ href=‘./ href=./ :) 新年快乐!


2008-1-1 00:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
samuel
初级用户





积分 22
发帖 9
注册 2007-12-28
状态 离线
『第 6 楼』:  

H:\新建文件夹>sed "s/\(href=\/\)/\(href=\).\//g" www.panjueshu.html >1panjueshu.html ^C终止批处理操作吗(Y/N)? Y 执行这个好像会死循环似的,要强行中止 [ Last edited by samuel on 2008-1-1 at 01:13 AM ]


2008-1-1 00:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 7 楼』:  

sed "s/\(<a href=['|\x22]\?\)\([^>]*\)/\1.\2/g" www.panjueshu.html >test.html 新年快乐! curl "http://www.panjueshu.com/"|sed "s/\(<a href=['|\x22]\?\)\([^>]*\)/\1.\2/g" >test.html [ Last edited by junchen2 on 2008-1-1 at 01:54 AM ]


附件 1: curl.rar (2008-1-1 01:56, 165.01 K,下载次数: 7)
2008-1-1 01:39
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
samuel
初级用户





积分 22
发帖 9
注册 2007-12-28
状态 离线
『第 8 楼』:  

谢谢junchen2:) 一个奇怪的现象: www.panjueshu.html页面我已经下载到了本机 H:\新建文件夹>sed "s/\(<a href=['|\x22]\?\)\([^>]*\)/\1.\2/g" www.panjueshu.html >1panjueshu.html 执行这个十分钟仍然没有完成替换,要强行中止。中止后发现替换后的文件只有8.33k,而原文件的大小是17.7k。我试了好几次都是这样,生成的文件只有8.33k。 强制结束程序以后,新生成的文件末端如下: ------------------------ <p>………………………………………………………………………………………………………… 2121012080056205)。逾期不交按自动撤回上诉处理。 </p> [ Last edited by samuel on 2008-1-1 at 10:00 AM ]


2008-1-1 04:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 9 楼』:  

可能是你SED的问题,我这里测试正常,你再运行下面的看看,我发一个SED上来。 curl "http://www.panjueshu.com/"|sed "s/\(<a href=['|\x22]\?\)\([^>]*\)/\1.\2/g" >test.html -------------------------------------------------------------------------------- <td><a href="./shaanxi/shaanxi.shtml">陕西</a></td><td><a href="./shanxi/shanxi.shtml">山西</a></td> <td><a href="./xinjiang/xinjiang.shtml">新疆</a></td><td><a href="./gansu/gansu.shtml">甘肃</a></td> <td><a href="./ningxia/ningxia.shtml">宁夏</a></td><td><a href="./qinghai/qinghai.shtml">青海</a></td> <td><a href="./xizang/xizang.shtml">西藏</a></td><td><a href="./hongkong/hongkong.shtml">香港</a></td> <td><a href="./macau/macau.shtml">澳门</a></td><td><a href="./taiwan/taiwan.shtml">台湾</a></td> <li><a href=./lawyer/lawyer-3.shtml>律师名录3</a></li> <li><a href=./lawyer/lawyer-4.shtml>律师名录4</a></li> <li><a href='./hunan/gaoyuan/zhangdeyuan.shtml'>湖南省国际信托投资公司董事长张德元受贿案</a></li> <li><a href='./guizhou/gaoyuan/yanjianhong.shtml'>贵州省国际信托投资公司董事长闫健宏贪污案</a></li> <li><a href='./gaoyuan/court/gaosunxiang.shtml'>原中信实业银行深圳分行行长高森祥受贿案</a></li> -------------------------------------- 上面是部分结果 [ Last edited by junchen2 on 2008-1-1 at 11:32 AM ]


2008-1-1 11:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 10 楼』:  

我发一个sed上来,刚才发不上来,下面是一前辈收集的SED www.vkill.net/tools.html [ Last edited by junchen2 on 2008-1-1 at 11:38 AM ]


2008-1-1 11:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
samuel
初级用户





积分 22
发帖 9
注册 2007-12-28
状态 离线
『第 11 楼』:  

谢谢junchen2 :) 用了你给的sed,运行确实没有问题 下面是最终的代码, ---------------------- @echo off setlocal enabledelayedexpansion for /f "delims=" %%i in ('dir /a /b /s *.shtml') do ( echo %%i sed -i "s/\(<p>*\)[\r\n]<\/p>/\1\n<\/p>/g" "%%i" sed -i "s/\(<a href=['|\x22]\?\)\([^.>]*\)/\1.\2/g" "%%i" time/t ) endlocal -----------------------


2008-1-1 19:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: