![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 02:28 |
共 48,040 主题排行 / 350,125 发帖 / 今日 1 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]如何替换html文件中的链接 |
| 可打印版本 821 / 10 |
| 第1楼 samuel | 发表于 2007-12-31 12:09 |
| 初级用户 发帖 9 积分 22 | |
|
[已结]如何替换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 ] |
|
| 第2楼 junchen2 | 发表于 2007-12-31 12:45 |
| 高级用户 发帖 219 积分 537 来自 杭州--半山 | |
|
sed "s/\(href=\x22\)\(.*\.html\x22\)/\1aaa\2/g" test.html
[ Last edited by junchen2 on 2007-12-31 at 12:55 PM ] |
|
| 第3楼 samuel | 发表于 2007-12-31 17:32 |
| 初级用户 发帖 9 积分 22 | |
|
这是什么原因? sed: couldn't write 126 items to stdout: Invalid argument
|
|
| 第4楼 junchen2 | 发表于 2008-01-01 00:05 |
| 高级用户 发帖 219 积分 537 来自 杭州--半山 | |
|
测试文件贴出来看看
|
|
| 第5楼 samuel | 发表于 2008-01-01 00:46 |
| 初级用户 发帖 9 积分 22 | |
|
就是下面这个主页
http://www.panjueshu.com/ 我要在里面有 href="/ href=‘/ href=/ 的/ 前加上个. 变成href="./ href=‘./ href=./ :) 新年快乐! |
|
| 第6楼 samuel | 发表于 2008-01-01 00:57 |
| 初级用户 发帖 9 积分 22 | |
|
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 ] |
|
| 第7楼 junchen2 | 发表于 2008-01-01 01:39 |
| 高级用户 发帖 219 积分 537 来自 杭州--半山 | |
|
sed "s/\(<a href=\?\)\(*\)/\1.\2/g" www.panjueshu.html >test.html
新年快乐! curl "http://www.panjueshu.com/"|sed "s/\(<a href=\?\)\(*\)/\1.\2/g" >test.html [ Last edited by junchen2 on 2008-1-1 at 01:54 AM ] 附件 curl.rar (165.01 KiB) |
|
| 第8楼 samuel | 发表于 2008-01-01 04:15 |
| 初级用户 发帖 9 积分 22 | |
|
谢谢junchen2:)
一个奇怪的现象: www.panjueshu.html页面我已经下载到了本机 H:\新建文件夹>sed "s/\(<a href=\?\)\(*\)/\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 ] |
|
| 第9楼 junchen2 | 发表于 2008-01-01 11:30 |
| 高级用户 发帖 219 积分 537 来自 杭州--半山 | |
|
可能是你SED的问题,我这里测试正常,你再运行下面的看看,我发一个SED上来。
curl "http://www.panjueshu.com/"|sed "s/\(<a href=\?\)\(*\)/\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 ] |
|
| 第10楼 junchen2 | 发表于 2008-01-01 11:34 |
| 高级用户 发帖 219 积分 537 来自 杭州--半山 | |
|
我发一个sed上来,刚才发不上来,下面是一前辈收集的SED
http://www.vkill.net/tools.html [ Last edited by junchen2 on 2008-1-1 at 11:38 AM ] |
|
| 第11楼 samuel | 发表于 2008-01-01 19:45 |
| 初级用户 发帖 9 积分 22 | |
|
谢谢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 ----------------------- |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |