![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 16:49 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]求助:批处理制作一个网页分页项 |
| 可打印版本 2,857 / 21 |
| 第1楼 ganjie | 发表于 2009-01-29 11:58 |
| 初级用户 发帖 37 积分 49 | |
|
[已结]求助:批处理制作一个网页分页项 最近下载了一些电子书,解压后全是一些htm网页,因为想把它们打包成chm格式的,所以想在网页中加入分页项
![]() 假设这样htm的文件名为:A、B、C、D、………………(这个是为有好发贴假设的文件名,不要误会了),假 设最后一项为S 如C 文件的分页项如下: <table widtd="500" border="0" align="center" cellpadding="0" cellspacing="0"> <tr> <td scope="col"><a href="A.htm">第一页</a></td> <td scope="col"><a href="B.htm">上一页</a></td> <td scope="col"><a href="A.htm">1</a></td> <td scope="col"><a href="B.htm">2</a></td> <td scope="col"><a href="C.htm">3</a></td> <td scope="col"><a href="D.htm">4</a></td> <td scope="col"><a href="E.htm">5</a></td> <td scope="col"><a href="F.htm">下一页</a></td> <td scope="col">3/19</td> <td scope="col"><a href="S.htm">最后一页</a></td> </tr> </table> 为了增加版面的简洁,下面是简化的形式,但批处理做出来的效果要和上面的htm代码相符,分页项规律如下:(下面的数字意思是 文件名按名称排序后的序号,如A就为1,C就为3 F就为5了,而诸如1/19、3/19 中的19,是因为假定有19个文件数) A 第一页A A1 B2 C3 D4 E5 1/19 最后一页S 补偿其后的四个 B 第一页A A1 B2 C3 D4 E5 2/19 最后一页S 补偿其后的三个 C 第一页A A1 B2 C3 D4 E5 3/19 最后一页S 因为有其两后两个则,没有补偿 D 第一页A B2 C3 D4 E5 F6 4/19 最后一页S E 第一页A C3 D4 E5 F6 G7 5/19 最后一页S F 第一页A D4 E5 F6 G7 H8 6/19 最后一页S 假如S为最后一个其对应数字为19则 补偿其前的四个 S 第一页A O15 P16 Q17 R18 S19 最后一页S 假如R为最后一个其对应数字为19则 补偿其前的三个 R 第一页A O15 P16 Q17 R18 S19 最后一页S 假如Q为倒数每三个,因为有了其前后两个了,就不用补偿 Q 第一页A O15 P16 Q17 R18 S19 最后一页S 以上均是文件数有5个或5个以上时 如果文件数只有一个则: A A1 1/1 如果文件数有二个则: A 第一页A A1 B2 1/2 最后一页B 补偿一个 A 第一页A A1 B2 2/2 最后一页B 如果文件数有三个则: A 第一页A A1 B2 C3 1/3 最后一页C 补偿两个 A 第一页A A1 B2 C3 2/3 最后一页C 补偿一个 C A 第一页A A1 B2 2/3 最后一页C 如果文件数有四个则: A 第一页A A1 B2 C3 D4 1/4 最后一页D 补偿三个 A 第一页A A1 B2 C3 D4 2/4 最后一页D 补偿两个 C 第一页A A1 B2 C3 D4 3/4 最后一页D 补偿一个 A 第一页A A1 B2 C3 D4 4/4 最后一页D 小弟在论坛上混有些日子了,但为了能实现上面的的分页项竟然要制作5个单独的批处理才能完成,所以求大大们帮忙写个批处理,谢谢了! [ Last edited by HAT on 2009-2-4 at 14:08 ] |
|
| 第2楼 ganjie | 发表于 2009-01-31 09:05 |
| 初级用户 发帖 37 积分 49 | |
|
谁来帮小弟呀,求大大们帮忙一下,如果有什么地方在贴子中不明白而不能回复的,可以回贴问呀,小弟表达水平实在有限,不知在贴子中还少什么?
|
|
| 第3楼 slore | 发表于 2009-01-31 15:43 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
因为太复杂了……
|
|
| 第4楼 netbenton | 发表于 2009-01-31 23:52 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
这样可以了吗? @echo off&setlocal enabledelayedexpansion
set/a n=0 for %%a in (*.htm) do ( set /a n+=1 set fn!n!=%%a ) set "z1=<table widtd="500" border="0" align="center" cellpadding="0" cellspacing="0">" set "z2=<tr>" set "z3=<td scope="col"><a href="!fn1!">第一页</a></td>" set "z8=<td scope="col"><a href="!fn%n%!">最后一页</a></td>" set "z9=</tr>" set "z10=</table>" if !n! gtr 1 goto noly (echo !z1!&echo !z2! set "z5=<td scope="col"><a href="!fn1!">1</a></td>" set "z7=<td scope="col">1/1</td>" echo !z5!&echo !z7!&echo !z9!&echo !z10!)>>!fn1! goto :eof :noly set/a ms=1-4,mb=1+4 for /l %%a in (1,1,!n!) do ( echo 正在写入文件 !fn%%a! set sn=0 for /l %%b in (!ms!,1,!mb!) do ( set/a sn+=1 set/a xo!sn!=%%b ) set xn=0 set "z7=<td scope="col">%%a/!n!</td>" (echo.!z1!&echo.!z2!&echo.!z3!&call :paup call :save !xo1!,!xo6! !xo2!,!xo7! !xo3!,0 !xo4!,0 !xo5!,0 !xo6!,0 !xo7!,0 !xo8!,0 !xo9!,0 call :pado echo.!z7!&echo.!z8!&echo.!z9!&echo.!z10!)>>!fn%%a! set/a ms+=1,mb+=1 ) echo 写入完成 pause goto :eof :paup if defined fn%xo4% set "z4=<td scope="col"><a href="!fn%xo4%!">上一页</a></td>"&echo !z4! goto :eof :pado if defined fn%xo6% set "z6=<td scope="col"><a href="!fn%xo6%!">下一页</a></td>"&echo !z6! goto :eof :save if "%2"=="" goto :eof if defined fn%1 ( if not defined fn%2 (set "pr=<td scope="col"><a href="!fn%1!">%1</a></td>"&!echo !pr!&set/a xn+=1) ) if !xn!==5 goto :eof shift shift goto :save |
|
| 第5楼 haolongo | 发表于 2009-02-01 16:43 |
| 初级用户 发帖 17 积分 24 | |
|
用不起来,你要说说用的方法。
|
|
| 第6楼 ganjie | 发表于 2009-02-02 07:51 |
| 初级用户 发帖 37 积分 49 | |
|
测试成功,谢谢 netbenton ,可你这是读取当前目录下的所有 htm文件,偶想读取当前目录下所有文件夹里的htm,保存在个自的文件夹下%%k\%%i.txt
@echo off setlocal enabledelayedexpansion set "route=%cd%" for /f "delims=" %%k in ('dir /ad /b "%route%"') do ( for /f "delims=" %%i in ('dir /b /a-d %%k\*.htm') do ( ………………………… ………………………… ) ) 因为如文件:黄易、古龙、柳生等小说文件夹是分开独立的,请再帮我改改,好吗,谢谢! [ Last edited by ganjie on 2009-2-2 at 07:58 ] |
|
| 第7楼 netbenton | 发表于 2009-02-02 12:26 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
@echo off
::自动建立网页连接的chm格式 ::遍历指的目录下的所有子目录,各个子目录独立一个chm ::会在处理过的目录生成一个chmchm.abc作为已处理的标记。 if '%1'=='' echo.&echo 请把要处理的总目录拖到本批处理上!&echo 或在命令行指明总目录!&echo 如:%~n0 d:\小说&pause&exit if '%1'=='#benton#' goto :begin pushd %1 if %errorlevel% gtr 0 echo.抱歉!你所指的目录不存在.&pause&exit for /f "tokens=* delims=" %%a in ('dir /ad /s /b^&cd') do ( pushd %%a call %0 #benton# popd ) if not '%test%=='t echo 目录"%cd%"下找不到任何*.htm文件 popd pause goto :eof :begin if not exist *.htm goto :eof set test=t&echo. if exist chmchm.abc echo 目录"%cd%"已有chm,本次跳过,&echo.如果要重加,请把该目录的chmchm.abc删除后,再试。&goto :eof echo 目录%cd% echo.>chmchm.abc setlocal enabledelayedexpansion set/a n=0 for %%a in (*.htm) do ( set /a n+=1 set fn!n!=%%a ) set "z1=<table widtd="500" border="0" align="center" cellpadding="0" cellspacing="0">" set "z2=<tr>" set "z3=<td scope="col"><a href="!fn1!">第一页</a></td>" set "z8=<td scope="col"><a href="!fn%n%!">最后一页</a></td>" set "z9=</tr>" set "z10=</table>" if !n! gtr 1 goto noly (echo !z1!&echo !z2! set "z5=<td scope="col"><a href="!fn1!">1</a></td>" set "z7=<td scope="col">1/1</td>" echo !z5!&echo !z7!&echo !z9!&echo !z10!)>>!fn1! goto :eof :noly set/a ms=1-4,mb=1+4 for /l %%a in (1,1,!n!) do ( echo 正在写入文件: !fn%%a! set sn=0 for /l %%b in (!ms!,1,!mb!) do ( set/a sn+=1 set/a xo!sn!=%%b ) set xn=0 set "z7=<td scope="col">%%a/!n!</td>" (echo.!z1!&echo.!z2!&echo.!z3!&call :paup call :save !xo1!,!xo6! !xo2!,!xo7! !xo3!,0 !xo4!,0 !xo5!,0 !xo6!,0 !xo7!,0 !xo8!,0 !xo9!,0 call :pado echo.!z7!&echo.!z8!&echo.!z9!&echo.!z10!)>>!fn%%a! set/a ms+=1,mb+=1 ) endlocal echo 写入完成 goto :eof :paup if defined fn%xo4% set "z4=<td scope="col"><a href="!fn%xo4%!">上一页</a></td>"&echo !z4! goto :eof :pado if defined fn%xo6% set "z6=<td scope="col"><a href="!fn%xo6%!">下一页</a></td>"&echo !z6! goto :eof :save if "%2"=="" goto :eof if defined fn%1 ( if not defined fn%2 (set "pr=<td scope="col"><a href="!fn%1!">%1</a></td>"&!echo !pr!&set/a xn+=1) ) if !xn!==5 goto :eof shift shift goto :save [ Last edited by netbenton on 2009-2-4 at 09:04 ] |
|
| 第8楼 ganjie | 发表于 2009-02-02 14:58 |
| 初级用户 发帖 37 积分 49 | |
|
netbenton ,你这个批处理,偶不知怎么运行,不过我看了一下代码,发现你误会了我的意思,我的要的是每个小说集里都的htm 添加入分页,如黄易小说里有 01.htm,02.htm等等,而古龙里也有类似的htm格式小说,我想让每个子文件夹都生成单独的分页,注意是独立的,不是相关的,如你4楼的代码,就生成得很好,偶就是想要每个子文件夹都是这种效果!
|
|
| 第9楼 netbenton | 发表于 2009-02-03 00:15 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
把全部代码存成一个批处理文件。
在资源管理器里把要处理的目录(总目录)拖放到这个秕处理上就可以了。 它所做的就是给每个子目录独立加的,并且对已处理过的子目录做记号, 就算你多拖一次也不会重加的。 |
|
| 第10楼 ganjie | 发表于 2009-02-03 10:16 |
| 初级用户 发帖 37 积分 49 | |
|
还是不行呀,偶已经把总目录或子文件夹拖放到这个批处理多次了,批处理窗口一下子就消失了,里面的htm一个也没有变什么内容呀,换了几个目录,还是没有什么反应!请大大帮忙改一下,把总目录改成当前目录%cd%,谢谢了!
[ Last edited by ganjie on 2009-2-3 at 10:21 ] |
|
| 第11楼 everest79 | 发表于 2009-02-03 16:10 |
| 金牌会员 发帖 1,127 积分 2,564 | |
| 第12楼 netbenton | 发表于 2009-02-03 19:48 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
不会呀,你有没有复制完整呀,我自己是测试过的哦!
直接上传,你下了试试吧 http://upload.cn-dos.net/img/1289.rar [ Last edited by netbenton on 2009-2-3 at 19:50 ] |
|
| 第13楼 ganjie | 发表于 2009-02-04 03:17 |
| 初级用户 发帖 37 积分 49 | |
|
谢谢netbenton还特意上传文件,偶自己认真的测试了,拖目录后批处理窗口一下子还是就消失了,里面的htm一个也没有内容变化,确实是没有什么反应!可以把总目录改成当前目录%cd%或是能让我指定文件夹目录,谢谢了!everest79的vbs不支持总目录,而且分页中的链接排序不是偶想要的,当前页居中,左右两个的形式!
[ Last edited by ganjie on 2009-2-4 at 04:09 ] |
|
| 第14楼 netbenton | 发表于 2009-02-04 09:13 |
| 银牌会员 发帖 752 积分 1,916 来自 广西 | |
|
试下这样吧,拷到要处理的总目录,直接打开。
@echo off ::在 %1 指定要处理的目录,如果所给目录不存在或不指定,则处理当前目录。 if '%1'=='#benton#' goto :bengin if not '%1==' pushd %1 for /f "tokens=* delims=" %%a in ('dir /ad /s /b^&cd') do ( pushd %%a call %0 #benton# popd ) if not '%test%=='t echo 目录"%cd%"下找不到任何*.htm文件 if not '%1==' popd pause goto :eof :bengin if not exist *.htm goto :eof set test=t&echo. if exist chmchm.abc echo 目录"%cd%"已有chm,本次跳过,&echo.如果要重加,请把该目录的chmchm.abc删除后,再试。&goto :eof echo 目录%cd% echo.>chmchm.abc setlocal enabledelayedexpansion set/a n=0 for %%a in (*.htm) do ( set /a n+=1 set fn!n!=%%a ) set "z1=<table widtd="500" border="0" align="center" cellpadding="0" cellspacing="0">" set "z2=<tr>" set "z3=<td scope="col"><a href="!fn1!">第一页</a></td>" set "z8=<td scope="col"><a href="!fn%n%!">最后一页</a></td>" set "z9=</tr>" set "z10=</table>" if !n! gtr 1 goto noly (echo !z1!&echo !z2! set "z5=<td scope="col"><a href="!fn1!">1</a></td>" set "z7=<td scope="col">1/1</td>" echo !z5!&echo !z7!&echo !z9!&echo !z10!)>>!fn1! goto :eof :noly set/a ms=1-4,mb=1+4 for /l %%a in (1,1,!n!) do ( echo 正在写入文件: !fn%%a! set sn=0 for /l %%b in (!ms!,1,!mb!) do ( set/a sn+=1 set/a xo!sn!=%%b ) set xn=0 set "z7=<td scope="col">%%a/!n!</td>" (echo.!z1!&echo.!z2!&echo.!z3!&call :paup call :save !xo1!,!xo6! !xo2!,!xo7! !xo3!,0 !xo4!,0 !xo5!,0 !xo6!,0 !xo7!,0 !xo8!,0 !xo9!,0 call :pado echo.!z7!&echo.!z8!&echo.!z9!&echo.!z10!)>>!fn%%a! set/a ms+=1,mb+=1 ) endlocal echo 写入完成 goto :eof :paup if defined fn%xo4% set "z4=<td scope="col"><a href="!fn%xo4%!">上一页</a></td>"&echo !z4! goto :eof :pado if defined fn%xo6% set "z6=<td scope="col"><a href="!fn%xo6%!">下一页</a></td>"&echo !z6! goto :eof :save if "%2"=="" goto :eof if defined fn%1 ( if not defined fn%2 (set "pr=<td scope="col"><a href="!fn%1!">%1</a></td>"&!echo !pr!&set/a xn+=1) ) if !xn!==5 goto :eof shift shift goto :save |
|
| 第15楼 ganjie | 发表于 2009-02-04 13:12 |
| 初级用户 发帖 37 积分 49 | |
|
OK,终于可以了,麻烦netbenton了,谢谢!
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |