找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 35387|回复: 12

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

[复制链接]
发表于 2014-4-11 10:51:43 | 显示全部楼层 |阅读模式
本帖最后由 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>
不知表达是否清楚,先谢了,

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2014-4-11 12:21:26 | 显示全部楼层
选其中一个html文件,压缩,上传,我好测试。
 楼主| 发表于 2014-4-11 13:54:53 | 显示全部楼层
http://zisea.com/content.asp?uni=050811
这种网页,附件不知为何不能上传,先谢了
发表于 2014-4-11 14:04:38 | 显示全部楼层
回复 3# DDDYJQ1


    压缩成rar或者zip
发表于 2014-4-11 14:27:43 | 显示全部楼层
仅对一楼数据写的 不考虑文件其他内容 操作前请先备份原文件
  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
复制代码
 楼主| 发表于 2014-4-11 14:38:11 | 显示全部楼层

,

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

谢谢各位,5楼的链接是改对了,就是文件内容全没了,要是能把其他内容保留住,找到其中链接并改一下路径就好了
发表于 2014-4-11 14:55:43 | 显示全部楼层
回复 6# DDDYJQ1


    传到百度网盘上面试试
发表于 2014-4-11 15:35:35 | 显示全部楼层
  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. }
复制代码
 楼主| 发表于 2014-4-11 20:13:22 | 显示全部楼层
请各位帮忙看看,10楼做完好像没有动静
发表于 2014-4-11 22:51:10 | 显示全部楼层
回复 11# DDDYJQ1


        以6、7楼为例,需要修改哪几处?修改成什么样子?
顶楼改后链接 <a href="../../htm/27/279a7.html> 后面没有引号是吗?
没有动静应该是把不需要修改的地方也改了
 楼主| 发表于 2014-4-11 23:23:41 | 显示全部楼层
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">
如果等号后有四个字符的,路径也取前两个字符,引号是我原来没表达清楚,批处理执行完,没有看到有改动过的
谢谢了
发表于 2014-4-12 00:04:06 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2014-4-12 08:36:46 | 显示全部楼层
对,可以了,谢谢了,太好了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 07:26 , Processed in 0.029515 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表