Board logo

标题: [文本处理] 如何用批处理替换HTML文件里指定的链接 [打印本页]

作者: batsoldier    时间: 2017-1-17 10:51     标题: 如何用批处理替换HTML文件里指定的链接

本帖最后由 batsoldier 于 2017-1-17 10:57 编辑

<div id="content">
<ul>  
<li><a href="http://News.7mj.com/tj.aspx?a=900&g=698421" target="_blank" class="edde37"> [新闻]公告</a></li>
<li><a href="http://News.7mj.com/tj.aspx?a=900&g=698421" target="_blank" class="edde37">[新闻]公告</a></li>
<li><a href="http://News.7mj.com/tj.aspx?a=900&g=698421" target="_blank" class="edde37">[新闻]公告</a></li>
<li><a href="http://News.7mj.com/tj.aspx?a=900&g=698421" target="_blank" class="edde37">[新闻]公告</a></li>
<li><a href="http://News.7mj.com/tj.aspx?a=900&g=698421" target="_blank">[活动]公告</a></li>
</ul>
</div>

</div>

<!--右边开始-->
<div id="right">

<div id="botton">
<div id="botton1"><a href="http://News.7mj.com/tj.aspx?a=900&g=698421" target="_blank"></a></div>
<div id="botton2"><a href="Cmdrun://News win.close" ></a></div>
</div>
</div>
</div>
</body>
</html>

将HTML文件里的链接http://News.7mj.com/tj.aspx?a=900&g=698421替换为http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g
特别是替换的链接里有%号是否要用到转义。
作者: 523066680    时间: 2017-1-17 11:09

本帖最后由 523066680 于 2017-1-17 11:11 编辑

Perl,输出结果没有核对。
  1. open READ, "<:raw", "src.txt" or warn "$!";
  2. our $all;
  3. my $a = quotemeta('http://News.7mj.com/tj.aspx?a=900&g=698421');
  4. my $b = 'http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&'.
  5.         's=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid'.
  6.         '=1092&pid=12&cnid=g';
  7. {
  8.     local $/ = undef;
  9.     $all = <READ>;
  10.     $all =~ s/$a/$b/gi;
  11. }
  12. close READ;
  13. open WRT, ">:raw", "dst.txt";
  14. print WRT $all;
  15. close WRT;
复制代码
  1. <div id="content">
  2. <ul>  
  3. <li><a href="http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g" target="_blank" class="edde37"> [新闻]公告</a></li>
  4. <li><a href="http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g" target="_blank" class="edde37">[新闻]公告</a></li>
  5. <li><a href="http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g" target="_blank" class="edde37">[新闻]公告</a></li>
  6. <li><a href="http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g" target="_blank" class="edde37">[新闻]公告</a></li>
  7. <li><a href="http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g" target="_blank">[活动]公告</a></li>
  8. </ul>
  9. </div>
  10. </div>
  11. <!--右边开始-->
  12. <div id="right">
  13. <div id="botton">
  14. <div id="botton1"><a href="http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%2BdPaoCSBuXfnUez71iJN3Aco%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g" target="_blank"></a></div>
  15. <div id="botton2"><a href="Cmdrun://News win.close" ></a></div>
  16. </div>
  17. </div>
  18. </div>
  19. </body>
  20. </html>
复制代码

作者: batsoldier    时间: 2017-1-17 11:45

谢谢。

再请问下这个HTML文件要怎么指定文件名和路径,比如是修改在D:\1\index.html 文件里的这个链接。
作者: 523066680    时间: 2017-1-17 12:01

本帖最后由 523066680 于 2017-1-17 12:04 编辑

回复 3# batsoldier

读取文件的部分:
    open READ, "<:raw", "src.txt" or warn "$!";
改为
    open READ, "<:raw", 'D:\1\index.html' or warn "$!";

输出文件的部分:
    open WRT, ">:raw", "dst.txt";
改为
    open WRT, ">:raw", 'D:\1\index.html';

注意代码是 Perl 语言的,不是批处理。
sed 处理这个问题应该不错,楼主可以等待其他回答。
作者: batsoldier    时间: 2017-1-17 13:50

非常感谢版主的解答,静等批处理解决方法。
作者: batsoldier    时间: 2017-1-19 14:52

请教有没有批处理解决方法。
作者: 老刘1号    时间: 2017-1-21 19:00


你可以自己More或TYPE试试……换行都有问题……
作者: 老刘1号    时间: 2017-1-21 19:00


去搞个Sed吧
作者: pcl_test    时间: 2017-1-22 19:49

  1. powershell "((gc 'test.html') -join \"`r`n\").replace('http://News.7mj.com/tj.aspx?a=900&g=698421','http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%%2BdPaoCSBuXfnUez71iJN3Aco%%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g')"
  2. pause
复制代码

作者: CrLf    时间: 2017-1-22 22:02

继续歪楼
  1. mshta http://bathome.net/s/hta/index.html "type('test.html').replace(/http:\/\/News.7mj.com\/tj.aspx\?a=900\&g=698421/g,'http://sfz.netvideo.com/gb4/icons/player/goto/?apid=0&s=ZZg%%2BdPaoCSBuXfnUez71iJN3Aco%%3D&atid=0&cid=789&ctid=1092&pid=12&cnid=g')" | more
  2. pause
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2