标题: [文本处理] [已解决]批处理如何将html网页文件中的链接修改成指定格式 [打印本页]
作者: DDDYJQ1 时间: 2014-4-11 10:51 标题: [已解决]批处理如何将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>
不知表达是否清楚,先谢了,
作者: DAIC 时间: 2014-4-11 12:21
选其中一个html文件,压缩,上传,我好测试。
作者: DDDYJQ1 时间: 2014-4-11 13:54
http://zisea.com/content.asp?uni=050811
这种网页,附件不知为何不能上传,先谢了
作者: DAIC 时间: 2014-4-11 14:04
回复 3# DDDYJQ1
压缩成rar或者zip
作者: terse 时间: 2014-4-11 14:27
仅对一楼数据写的 不考虑文件其他内容 操作前请先备份原文件- @echo off
- set "h=<a href="../../htm/"
- setlocal enabledelayedexpansion
- for /f "delims=" %%i in ('dir /b/s/a-d *.html') do (
- (for /f usebackqtokens^=2delims^=^" %%j in ("%%i") do (
- for /f "tokens=2delims==" %%k in ("%%j") do (
- set "str=%%k"
- if "!str:~5!" == "" (
- set "str=!str:~,2!"
- ) else set "str=!str:~,3!"
- echo !h!!str!/%%k.html"^>
- )
- ))>$
- move $ "%%i"
- )
- pause
复制代码
作者: DDDYJQ1 时间: 2014-4-11 14:38 标题: ,
本帖最后由 DDDYJQ1 于 2014-4-11 14:41 编辑
谢谢各位,5楼的链接是改对了,就是文件内容全没了,要是能把其他内容保留住,找到其中链接并改一下路径就好了
作者: DAIC 时间: 2014-4-11 14:55
回复 6# DDDYJQ1
传到百度网盘上面试试
作者: apang 时间: 2014-4-11 15:35
- @set @n=0;/* & echo off
- dir /b/s *.html | cscript -nologo -e:jscript "%~0"
- pause & exit /b & rem */
- fso = new ActiveXObject('Scripting.FileSystemObject');
- while (!WScript.StdIn.AtEndOfStream) {
- f = WScript.StdIn.ReadLine();
- txt = fso.OpenTextFile(f, 1).ReadAll();
- txt = txt.replace(/(.+=").+=(.{4,6})"/img,
- function(s0, s1, s2) {
- m = Math.floor(s2.length / 2);
- s = s1 + '\.\./\.\./htm/';
- s += s2.substr(0, m) + '/' + s2 + '\.html"';
- return s
- }
- );
- fso.OpenTextFile(f, 2, true).Write(txt);
- }
复制代码
作者: DDDYJQ1 时间: 2014-4-11 20:13
请各位帮忙看看,10楼做完好像没有动静
作者: apang 时间: 2014-4-11 22:51
回复 11# DDDYJQ1
以6、7楼为例,需要修改哪几处?修改成什么样子?
顶楼改后链接 <a href="../../htm/27/279a7.html> 后面没有引号是吗?
没有动静应该是把不需要修改的地方也改了
作者: DDDYJQ1 时间: 2014-4-11 23:23
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">
如果等号后有四个字符的,路径也取前两个字符,引号是我原来没表达清楚,批处理执行完,没有看到有改动过的
谢谢了
作者: apang 时间: 2014-4-12 00:04
本帖最后由 apang 于 2014-4-12 12:24 编辑
后缀为htm 而不是顶楼所说html,所以没有修改。改成dir /b/s *.htm 可以兼顾htm和html文件- @set @n=0;/* & echo off
- dir /b/s *.htm | cscript -nologo -e:jscript "%~0"
- pause & exit /b & rem */
- fso = new ActiveXObject('Scripting.FileSystemObject');
- while (!WScript.StdIn.AtEndOfStream) {
- f = WScript.StdIn.ReadLine();
- txt = fso.OpenTextFile(f, 1).ReadAll();
- txt = txt.replace(/"http:\/\/.+?uni=([\da-z]{4,6})"/ig,
- function(s0, s1) {
- m = Math.floor(s1.length / 2);
- s = '"../../htm/' + s1.substr(0, m) + '/' + s1 + '.html"';
- return s
- }
- );
- fso.OpenTextFile(f, 2, true).Write(txt);
- }
复制代码
作者: DDDYJQ1 时间: 2014-4-12 08:36
对,可以了,谢谢了,太好了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |