Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

FSO遍历文件夹,按时间排序,删除早期文件

时 间:2012-05-28 08:36:40
作 者:风行   ID:16058  城市:江阴
摘 要:参考
正 文:

set fso=CreateObject("Scripting.FileSystemObject")
if request("Action")="Del" then
whichfile=server.mappath(Request("FileName"))
Set thisfile = fso.GetFile(whichfile)
thisfile.Delete True
end if
%>
<%
Response.Write "<table cellspacing=1 cellpadding=0 align=center bgcolor=#666666 bordercolor=#000000 border=0>"
Response.Write "<tr bgcolor=#33CCCC>"
Response.Write " <td>ID</td>"
Response.Write " <td>文件</td>"
Response.Write " <td>文件大小</td>"
Response.Write " <td>创建日期</td>"
Response.Write " <td>操作</td>"
Response.Write "</tr>"

FoldPath=Server.MapPath("../html/")
set fso = Server.CreateObject("Scripting.FileSystemObject")

'得到目录下所有文件的信息集合
set fsoFolder=fso.GetFolder(FoldPath)
Set GetFiles =fsoFolder.files

'定义数组,和变量
Dim FileArr(),i,p,Max,OrderBy,Total,MoveAddRessStart,MoveAddRessEnd,PCount,PFSize,APFSize
Max = 20'默认的显示条数
orderBy="DESC"'排序方式,DESC倒序,ASC正序


'得到大于0的页码
P = Request.QueryString("P")
IF P <> "" Then
If IsNumeric(P) Then
IF Cint(P) > 0 Then
P = Cint(P)
Else
P = 1
End If
Else
P = 1
End IF
Else
P = 1
End IF


'定义了文件总数的数组,0为文件名,1为日期时间,2为文件大小
ReDim FileArr(Getfiles.count-1,2)
i = 0
For Each f In GetFiles
IF FilterName(Lcase(f.Name)) Then

'取出文件名
FileArr(i,0) = f.Name

'取出文件建立时间
FileArr(i,1) = f.DateCreated
FileArr(i,2) = f.Size
APFSize=APFSize+f.Size
i = i + 1
End IF
Next


'得到总页数
Total=i
IF Total Mod Max = 0 Then
PCount = ToTal / Max
Else
PCount = Total \ Max + 1
End IF
IF P > PCount Then P = PCount


'对文件进行排序按日期,OrderBy等于DESC倒序,OrderBy等于ASC正序
For One = 0 To i - 1
For Two = 0 To i - 1
IF Ucase(OrderBy) = "DESC" Then
orderByConditions=(CDate(FileArr(One,1)) > CDate(FileArr(Two,1)))
ElseIF Ucase(OrderBy) = "ASC" Then
orderByConditions=(CDate(FileArr(One,1)) < CDate(FileArr(Two,1)))
End IF
IF orderByConditions Then
TempName = FileArr(Two,0)
TempTime = FileArr(Two,1)
TempSize = FileArr(Two,2)
FileArr(Two,0) = FileArr(One,0)
FileArr(Two,1) = FileArr(One,1)
FileArr(Two,2) = FileArr(One,2)
FileArr(One,0) = TempName
FileArr(One,1) = TempTime
FileArr(One,2) = TempSize
End IF
Next
Next


'得到当前页的文件位置,开始地址如果为第一页则其实位置是0,因为数组的下限是0
MoveAddRessStart = P * Max - Max

IF (i-1-Max) > MoveAddRessStart Then
MoveAddRessEnd=MoveAddRessStart+Max-1
Else
MoveAddRessEnd=(i-1)-1
End IF
'Response.write Total

'显示列表
For j = MoveAddRessStart To MoveAddRessEnd
'Response.Write FileArr(j,2)&filearr(j,0):response.end
Response.Write "<tr><td bgcolor=#ffffff>" & j & "</td><td bgcolor=#ffffff>"&FileArr(j,0)&"</td><td bgcolor=#ffffff>" & SizeTo(FileArr(j,2)) & "</td><td bgcolor=#ffffff>"&FileArr(j,1)&"</td><td><a href='?Action=Del&FileName=../html/"&FileArr(j,0)&"'>删除</a></td></tr>"
PFSize = PFSize + FileArr(j,2)
Next
Response.Write "<tr><td bgcolor=#ffffff colspan=4 align=right>"
Response.Write "当前页有" & MoveAddRessEnd-MoveAddRessStart+1 & "个文件 "
Response.Write "占用空间" & SizeTo(PFSize) & " "
IF P > 1 Then
Response.Write "<a href=?p=1>首页</a> <a href=?p="&p-1&">上一页</a> "
Else
Response.Write "首页 上一页 "
End IF
IF P < PCount Then
Response.Write "<a href=?p="&P+1&">下一页</a> <a href=?p="&PCount&">尾页</a> "
Else
Response.Write "下一页 尾页 "
End IF
Response.Write P&"/"&PCount&"页 "
Response.Write "共有"&Total&"个文件 "
Response.Write "共" & SizeTo(APFSize) & " "
Response.Write "</td></tr>"
Response.WRite "</table>"

'过滤文件扩展名
Function FilterName(FileName)
Dim Filter_Expansion_Name,ExpansionName
Filter_Expansion_Name = "|asp|htm|jpg|jpeg|gif|swf|bmp|png|"'过滤取得文件夹中的文件类型,如果只填写htm则只取htm文件,注意文件本身不会出现在这个表中,但会计算在总数中
'得到扩展名
For Tp= Len(FileName) To 1 Step -1
IF Mid(FileName,Tp,1) = "." Then
Exit For
Else
ExpansionName = Mid(FileName,Tp,1) & ExpansionName
End IF
Next
IF Instr(1,Filter_Expansion_Name,"|" & ExpansionName & "|")>0 Then
FilterName=True
Else
FilterName=False
End If
End Function

'转换文件大小转换
Function SizeTo(PFSize)
SizeTo=0
IF PFSize>(1024*1024*1024) And (PFSize/1024/1024/1024)>0 Then
'GB转换
SizeTo=FormatNumber(PFSize/1024/1024/1024,2)&"GB"
ElseIF PFSize>(1024*1024) And (PFSize/1024/1024)>0 Then
'MB转换
SizeTo=FormatNumber(PFSize/1024/1024,2)&"MB"
ElseIF PFSize>1024 And (PFSize/1024)>0 Then
'KB转换
SizeTo=FormatNumber(PFSize/1024,2)&"KB"
ElseIF PFSize>0 Then
'byte转换
SizeTo=FormatNumber(PFsize,2)&"B"
Else
SizeTo=0&"B"
End IF
End Function

Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助