[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理如何将html网页文件中的链接修改成指定格式

本帖最后由 pcl_test 于 2016-8-10 20:53 编辑

求个网页链接的批处理?
某文件夹下有许多文件和子文件夹,内有许多.HTML文件,源文件中有如下一些链接,
不知批处理能否实现按等号后的部分,添加文件路径,有四个字符的,添加文件路径为前两个字符,有五个字符

的,也添加文件路径为前两个字符,有六个文件名的,添加文件路径为前三个字符,等号前有两种格式

原来链接                                                           改后链接
<a href="http://zisea.com/content.asp?uni=279a7">    <a href="../../htm/27/279a7.html>
<a href="http://zisea.com/content.asp?uni=279a9">    <a href="../../htm/27/279a9.html>
<a href="http://zisea.com/content.asp?uni=2B359">    <a href="../../htm/2B/2B359.html>
<a href="http://zisea.com/content.asp?uni=095815">   <a href="../../htm/095/095815.html>
<a href="http://zisea.com/content.asp?uni=095315">   <a href="../../htm/095/095315.html>


<a href="http://zisea.com/zsCONTENT.aSP?uni=21F31">  <a href="../../htm/21/21F31.html>
<a href="http://zisea.com/zsCONTENT.aSP?uni=5C9B">   <a href="../../htm/5C/5C9B.html>
不知表达是否清楚,先谢了,
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

选其中一个html文件,压缩,上传,我好测试。

TOP

http://zisea.com/content.asp?uni=050811
这种网页,附件不知为何不能上传,先谢了

TOP

回复 3# DDDYJQ1


    压缩成rar或者zip

TOP

仅对一楼数据写的 不考虑文件其他内容 操作前请先备份原文件
  1. @echo off
  2. set "h=<a href="../../htm/"
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%i in ('dir /b/s/a-d *.html') do (
  5.     (for /f usebackqtokens^=2delims^=^" %%j in ("%%i") do (
  6.         for /f "tokens=2delims==" %%k in ("%%j") do (
  7.             set "str=%%k"
  8.             if "!str:~5!" == "" (
  9.                set "str=!str:~,2!"
  10.             ) else set "str=!str:~,3!"
  11.               echo !h!!str!/%%k.html"^>
  12.         )
  13.     ))>$
  14.     move $ "%%i"
  15. )
  16. pause
复制代码

TOP

,

本帖最后由 DDDYJQ1 于 2014-4-11 14:41 编辑

谢谢各位,5楼的链接是改对了,就是文件内容全没了,要是能把其他内容保留住,找到其中链接并改一下路径就好了

TOP

回复 6# DDDYJQ1


    传到百度网盘上面试试

TOP

  1. @set @n=0;/* & echo off
  2. dir /b/s *.html | cscript -nologo -e:jscript "%~0"
  3. pause & exit /b & rem */
  4. fso = new ActiveXObject('Scripting.FileSystemObject');
  5. while (!WScript.StdIn.AtEndOfStream) {
  6.     f = WScript.StdIn.ReadLine();
  7.     txt = fso.OpenTextFile(f, 1).ReadAll();
  8.     txt = txt.replace(/(.+=").+=(.{4,6})"/img,
  9.         function(s0, s1, s2) {
  10.             m = Math.floor(s2.length / 2);
  11.             s = s1 + '\.\./\.\./htm/';
  12.             s += s2.substr(0, m) + '/' + s2 + '\.html"';
  13.             return s
  14.         }
  15.     );
  16.     fso.OpenTextFile(f, 2, true).Write(txt);
  17. }
复制代码

TOP

请各位帮忙看看,10楼做完好像没有动静

TOP

回复 11# DDDYJQ1


        以6、7楼为例,需要修改哪几处?修改成什么样子?
顶楼改后链接 <a href="../../htm/27/279a7.html> 后面没有引号是吗?
没有动静应该是把不需要修改的地方也改了

TOP

6楼的<A HREF="http://zisea.com/zsCONTENT.ASP?uni=24F27"> 没有改成路径
        <a href="../../htm/24/24F27.html“>
7楼的<A HREF="http://zisea.com/zsCONTENT.ASP?uni=65E1">没有改成路径
        <a href="../../htm/65/65E1.html“>
引号是我原来没表达清楚,
以发上的9876.HTM为例
      原来                                                                                          改为
<a href="http://zisea.com/content.asp?uni=27D5C">          <a href="../../htm/27/27D5C.html">
<a href="http://zisea.com/content.asp?uni=29486">         <a href="../../htm/29/29486.html">
<a href="http://zisea.com/content.asp?uni=29562">         <a href="../../htm/29/29562.html">
<a href="http://zisea.com/content.asp?uni=29569">         <a href="../../htm/29/29569.html">
<a href="http://zisea.com/content.asp?uni=29811">         <a href="../../htm/28/29811.html">
<a href="http://zisea.com/content.asp?uni=071544">         <a href="../../htm/071/071544.html">
<a href="http://zisea.com/content.asp?uni=158950">         <a href="../../htm/158/158950.html">
<a href="http://zisea.com/content.asp?uni=159047">         <a href="../../htm/159/159047.html">
如果等号后有四个字符的,路径也取前两个字符,引号是我原来没表达清楚,批处理执行完,没有看到有改动过的
谢谢了

TOP

本帖最后由 apang 于 2014-4-12 12:24 编辑

后缀为htm 而不是顶楼所说html,所以没有修改。改成dir /b/s *.htm 可以兼顾htm和html文件
  1. @set @n=0;/* & echo off
  2. dir /b/s *.htm | cscript -nologo -e:jscript "%~0"
  3. pause & exit /b & rem */
  4. fso = new ActiveXObject('Scripting.FileSystemObject');
  5. while (!WScript.StdIn.AtEndOfStream) {
  6.     f = WScript.StdIn.ReadLine();
  7.     txt = fso.OpenTextFile(f, 1).ReadAll();
  8.     txt = txt.replace(/"http:\/\/.+?uni=([\da-z]{4,6})"/ig,
  9.         function(s0, s1) {
  10.             m = Math.floor(s1.length / 2);
  11.             s = '"../../htm/' + s1.substr(0, m) + '/' + s1 + '.html"';
  12.             return s
  13.         }
  14.     );
  15.     fso.OpenTextFile(f, 2, true).Write(txt);
  16. }
复制代码
1

评分人数

TOP

对,可以了,谢谢了,太好了

TOP

返回列表