對於網站設計者而言,時常處理大批量的文件是難免的,特別是圖片和一些文字文字文件,更是經常處理。而由於網站大量文件的關係,對於同類型文件的命名,往往就直接採用帶有一定規律的遞增數字來作為文件名,比如,我們常見的圖片文件的命名,就時常採用1001.jpg、1002. jpg這種方式,這樣的好處是檔案名稱不會重複,容易管理。這裡,我們專門介紹一種簡單易行的方法來實現對任意資料夾下的所有文件進行批量改名,當然,改名以後的文件名,是根據網站設計者的需要,按照數字進行遞增的。
我們使用ASP來實現以上功能,需要注意的是,因為設計到檔案操作,使用FileSystemObject對象,所以,該功能的實作要在具有檔案操作權限的網站進行。一般的虛擬注意,考慮到安全要求,可能不會給予文件存在權限,這是我們首先需要注意的;另外,在下面的程序中,我們將操作指定資料夾strFromDir中的所有文件,只要是這個文件夾中的文件,無論文件類型如何,程式都會對其進行文件改名操作,當然,文件類型是不會進行改變的,改名以後的文件,將不在保存在原文件夾,而是移動到新的文件夾strTargetDir,注意,我們這裡是移動,不是拷貝,所以,進行操作以後,原始資料夾中所有的檔案都將不存在;程式很好的利用了FileSystemObject物件提供的各種屬性和特徵,實現的時候簡單明了,使用其他語言程式設計的朋友可能會感受深刻;現在,我們就來看功能實作程式碼:
<% @LANGUAGE = VBSCRIPT %>
<%Option Explicit%>
<%
'以下程式批量改名資料夾中的檔案名,並將所有檔案移至新的資料夾;
Response.Write "<html>" & VbCrLf & "<head>" & VbCrLf
Response.Write "<title>批次檔改名</title>" & VbCrLf
Response.Write "</head>" & VbCrLf & "<body>" & VbCrLf
' 變數說明
Dim gbolGoProcedure
Dim strFromDir '來源資料夾
Dim strTargetDir '目標資料夾
Dim objFS
Dim objRootFolder
Dim objFile
Dim strFileNameLen
Dim strPrevFileName
Dim strFileExt '檔案副檔名
Dim strFileNameCount
Dim strNewFileName
Dim strRealCount '處理的檔案數量
gbolGoProcedure = False
' 如果點擊了開始按鈕,進行以下處理
If (Request.Form("GoButton")) = " 開始" then
' 指定原始資料夾、目標資料夾
strFromDir = "D:test"
strTargetDir = "D:test1"
' 將處理檔案數量設為0
strRealCount = 0
Set objFS = Server.CreateObject("Scripting.FileSystemObject")
Set objRootFolder = objFS.GetFolder(strTargetDir)
'檔案名稱的具體設置,這裡設置為100001,表明檔案名稱將從100001
'開始,逐步遞增,可依需求設定;
strFileNameCount = 100001
For each objFile in objRootFolder.Files
'對於特定的文件,不進行處理,可以根據需要設定;
If objFile.Name = "Thumbs.db" then strFileNameCount = StrFileNameCount - 1
strFileNameCount = strFileNameCount + 1
Next
Set objRootFolder = objFS.GetFolder(strFromDir)
For each objFile in objRootFolder.Files
strFileNameLen = Len (objFile.Name)
If Mid (objFile.Name,(strFileNameLen - 3),1) = "." then
strFileExt = right(objFile.Name, 4)
Else
strFileExt = right(objFile.Name, 5)
End If
strPrevFileName = objFile.Name
strNewFileName = strFileNameCount & strFileExt
objFile.Move strTargetDir & strNewFileName
Response.Write "來源檔: " &strFromDir&strPrevFileName & " > 移動並改名為: " &strTargetDir& strFileName & "< bILF & "<
strFileNameCount = strFileNameCount + 1
strRealCount = strRealCount + 1
Next
Response.Write "<p><b>共處理: " & (strRealCount) & " 個檔案</B>" & vbCrLf
Set objRootFolder = Nothing
Set objFS = Nothing
gbolGoProcedure = True
End If
If gbolGoProcedure Then
Response.Write("<p><b>批次檔案批次移動與改名</b>") & vbCrLf
Else
Response.Write("<center><br><form method=""post"" action=""FileNameConverter.asp"" ID=form1 name=""form1"">") & vbCrLf
Response.Write("<input type=""SUBMIT"" value="" 開始"" ID=""GoButton"" name=""GoButton"">") & vbCrLf
Response.Write("</form>") & vbCrLf
Response.Write("<p><b>點選按鈕對檔案進行批次移動與改名</b></center>") & VbCrLf
End If
Response.Write "</body>" & VbCrLf & "</html>"
%>