ASP批量生成静态页面

以下是我批量生成静态页面的程序,现在有个问题就是,我每次运行这个程序的时候,每次都是重新生成,我希望的是,如果该静态页面已经存在的话,就读取该静态页面,直接更新这个页面,... 以下是我批量生成静态页面的程序,现在有个问题就是,我每次运行这个程序的时候,每次都是重新生成,我希望的是,如果该静态页面已经存在的话,就读取该静态页面,直接更新这个页面,如果不存在在直接生成,因为我的静态页面的路径是存在数据库中的,模板也是数据库中的,如果重新生成的话,静态的页面的名字是根据时间命名的,所以也会改变,请高手帮忙指点
<!--#include file="conn.asp"-->
<!--#include file="lib.asp" -->
<%
fname = makefilename(now()) 'makefilename为自定义函数
folder = "../newsfile/"&date()&"/"
filepath = folder&fname

dim cid,sql,msql
''cid=cint(request.QueryString("cid"))''分类id号
msql="select m_id,m_html from c_moban where m_id=1" ''打开摸板内容.就一个摸板,显示新闻内容的
set rs1=Server.CreateObject("adodb.recordset")
rs1.open msql,conn,1,1
mb_code=rs1("m_html")

start = request("start") ''获取本轮指针的开始位置
If IsNumeric(start) Then start = CLng(start) Else start=1
If start=0 Then start = 1 ''
''提取某一子栏目下的所有新闻.
sql="select * from shop_news1 order by newsid"
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.open sql,conn,3,2
rs.AbsolutePosition = start

Dim cnt:cnt = 1 ''本轮循环计数器初始化

do while not rs.eof and cnt<= 500

mb_code=rs1("m_html")
addname=rs("addname")
newsname=rs("newsname")
newsname=htmlencode(newsname)
content=rs("content")
addname=htmlencode(addname)
newsid=rs("newsid")

mb_code=replace(mb_code,"$newsid{newsid}",newsid)
mb_code=replace(mb_code,"$addname{addname}",addname)
mb_code=replace(mb_code,"$newsname{newsname}",newsname)
mb_code=replace(mb_code,"$cncontent{Content}",content)
mb_code=replace(mb_code,"$adddate{adddate}",now())
mb_code=replace(mb_code,"$description{description}",left(content,200))
rs("c_filepath")=filepath & "-" & cnt & ".html"
rs.update

''生成HTML页面
Set fso = Server.CreateObject("Scripting.FileSystemObject")
myfile=Server.MapPath(filepath & "-" & cnt & ".html")
if (fso.FolderExists(Server.MapPath(folder))) then
else
fso.CreateFolder(Server.MapPath(folder))
end if
if (fso.FileExists(myfile)) then
Dim df
Set df=fso.GetFile(myfile)
df.delete
end if

Set fout = fso.CreateTextFile(myfile,true)
fout.WriteLine mb_code
fout.close
set fout=Nothing
set fso=Nothing
cnt=cnt+1
rs.movenext

loop
If Not rs.eof Then ''通过刷新的方式进行下一轮请求,并将指针变量start传递到下一轮
response.write "<meta http-equiv=''refresh'' content=''0;URL=?start="&start&"''>"
Else
response.write "生成HTML文件完毕!"
End if

rs.close
rs1.close
set rs1=nothing
conn.close
set conn=nothing
%>
展开
 我来答
灵巧且巍然丶才俊H
推荐于2016-02-05 · TA获得超过1515个赞
知道小有建树答主
回答量:202
采纳率:0%
帮助的人:164万
展开全部
<!--#include file="conn.asp"-->
<!--#include file="lib.asp" -->

<%
Function RemoveHTML(strHTML)
Dim objRegExp, Match, Matches
Set objRegExp = New Regexp
objRegExp.IgnoreCase = True
objRegExp.Global = True
'取闭合的<>
objRegExp.Pattern = "<.+?>"
'进行匹配
Set Matches = objRegExp.Execute(strHTML)
' 遍历匹配集合,并替换掉匹配的项目
For Each Match in Matches
strHtml=Replace(strHTML,Match.Value,"")
strHtml=Replace(strHTML," ","")
Next
RemoveHTML=strHTML
Set objRegExp = Nothing
End Function

'调用

str=RemoveHTML(str)

%>

<%
fname = makefilename(now()) 'makefilename为自定义函数
folder = "../newsfile/"&date()&"/"
filepath = folder&fname

dim cid,sql,msql
''cid=cint(request.QueryString("cid"))''分类id号
msql="select m_id,m_html from c_moban where m_id=4" ''打开摸板内容.就一个摸板,显示新闻内容的
set rs1=Server.CreateObject("adodb.recordset")
rs1.open msql,conn,1,1
mb_code=rs1("m_html")

start = request("start") ''获取本轮指针的开始位置
If IsNumeric(start) Then start = CLng(start) Else start=1
If start=0 Then start = 1 ''
''提取某一子栏目下的所有新闻.
sql="select * from shop_zhuanjia order by zjid"
Set rs = Server.CreateObject ("ADODB.Recordset")
rs.open sql,conn,3,2
rs.AbsolutePosition = start

Dim cnt:cnt = 1 ''本轮循环计数器初始化

do while not rs.eof and cnt<= 500

mb_code=rs1("m_html")
oldfilepath=rs("c_filepath")

zjname=rs("zjname")
tjname=rs("tjname")
tjname=htmlencode(tjname)
content=rs("content")
zjname=htmlencode(zjname)
zjid=rs("zjid")

mb_code=replace(mb_code,"$zjid{zjid}",zjid)
mb_code=replace(mb_code,"$addname{addname}",zjname)
mb_code=replace(mb_code,"$newsname{newsname}",tjname)
mb_code=replace(mb_code,"$cncontent{Content}",content)
mb_code=replace(mb_code,"$adddate{adddate}",now())
mb_code=replace(mb_code,"$description{description}",left(RemoveHTML(content),200))

''生成HTML页面
Set fso = Server.CreateObject("Scripting.FileSystemObject")
if fso.fileExists(Server.MapPath(oldfilepath)) then
Set file=fso.CreateTextFile(Server.MapPath(oldfilepath))
file.WriteLine mb_code
file.close
else
if not fso.FolderExists(Server.MapPath(folder)) then
fso.CreateFolder(Server.MapPath(folder))
end if
Set file=fso.CreateTextFile(Server.MapPath(filepath & "-" & cnt & ".html"))
file.WriteLine mb_code

file.close
rs("c_filepath")=filepath & "-" & cnt & ".html"
rs.update
end if
cnt=cnt+1
rs.movenext

loop

response.write "生成HTML文件完毕!"
%>
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式