|
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 来自 杭州--半山
状态 离线
|
|
2008-1-1 00:05 |
|
|
samuel
初级用户
积分 22
发帖 9
注册 2007-12-28
状态 离线
|
|
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 来自 杭州--半山
状态 离线
|
|
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 |
|