楼主补充了新问题:
相互链接的文件由5个改为n个:
@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 "num=7" 在这里定义项数,多少项都可以
set "fg=<td scope="col">.</td>" 这里定义分隔符
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 不止一个文件
for /l %%a in (1,1,!n!) do (
echo 正在写入文件: !fn%%a!
set "z7=<td scope="col">%%a/!n!</td>"
set/a pup=%%a-1,pdo=%%a+1
(echo;!z1!&echo;!z2!&echo;!z3!
call :save %%a
echo;!z7!&echo;!z8!&echo;!z9!&echo;!z10!)>>!fn%%a!
)
endlocal
echo 写入完成
pause
goto :eof
:save
if defined fn%pup% set "z4=<td scope="col"><a href="!fn%pup%!">上一页</a></td>"&echo !z4!
echo !fg!
set/a sn=0,ms=%1-num,mb=%1+num-1,nun=num/2+1,mmm=0
for /l %%a in (!ms!,1,!mb!) do (
set/a xn=%%a+num,mmm+=1
set yy=
if not defined fn!xn! (set yy=1) else (
if !mmm! gtr !nun! set yy=1
)
if defined fn%%a (
if defined yy (
set "pr=<td scope="col"><a href="!fn%%a!">%%a</a></td>!fg!"
if %%a equ %1 set "pr=<td >%%a</td>!fg!"
rem 这句使当前项免去链接,如果不需要,可以删除。
echo !pr!
set/a sn+=1
)
)
if !sn! equ !num! goto :ok
)
:ok
if defined fn%pdo% set "z6=<td scope="col"><a href="!fn%pdo%!">下一页</a></td>"&echo !z6!