官术网_书友最值得收藏!

1.5.2 文件夾操作

表1-7列出了文件夾常用操作的對應方法。

表1-7 文件夾常用操作的方法

1. 創建文件夾

創建文件夾可以使用FSO對象的CreateFolder方法,或使用文件夾集合的Add方法,參數就是要創建的文件夾。

創建文件夾之前,應該先判斷該文件夾是否已經存在,使用FolderExists方法即可。存在的話就不要創建了,否則會報錯。

范例程序如下所示。

FolderCreate.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

'當前目錄下的FolderCreateTest文件夾
folderPath = Server.MapPath(".") & "\FolderCreateTest"
folderPath2 = Server.MapPath(".") & "\FolderCreateTest2"

Set fso = CreateObject("Scripting.FileSystemObject")

'判斷文件夾是否存在
If Not fso.FolderExists(folderPath) Then
    '創建文件夾
    Set newFolder = fso.CreateFolder(folderPath)
    Response.Write newFolder.Path & "<br>"
Else
    Response.Write "文件夾已存在。"
End If

'判斷文件夾是否存在
If Not fso.FolderExists(folderPath2) Then
    Set folder = fso.GetFolder(Server.MapPath("."))

    '創建文件夾
    Set newFolder = folder.SubFolders.Add("FolderCreateTest2")
    Response.Write newFolder.Path
Else
    Response.Write "文件夾已存在。"
End If

Set fso = Nothing
%>

如果想一次創建多層的文件夾,那么,很遺憾,沒有什么好辦法,只能一層一層地創建。

2. 復制文件夾

復制文件夾可以使用FSO對象的CopyFolder方法或Folder對象的Copy方法,格式如下:

fso.CopyFolder 源文件夾,目標文件夾,是否覆蓋同名文件夾
folder.Copy 目標文件夾,是否覆蓋同名文件夾

兩個方法是類似的,只是前者需要指定源文件夾,而后者的folder變量就代表著源文件夾。是否覆蓋同名文件夾,這個參數默認是True,即覆蓋,如果是False,若存在同名文件夾,則報錯。

下例將通過兩個方法,將FolderCopyA文件夾復制為FolderCopyB和FolderCopyC。

FolderCopy.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

'注意目標路徑結尾的反斜杠的作用
folderPathA = Server.MapPath(".") & "\FolderCopyA"
folderPathB = Server.MapPath(".") & "\FolderCopyB\"
folderPathC = Server.MapPath(".") & "\FolderCopyC"

Set fso = CreateObject("Scripting.FileSystemObject")

'將FolderCopyA目錄復制到FolderCopyB下面
fso.CopyFolder folderPathA, folderPathB, True '覆蓋同名文件夾

'將FolderCopyA目錄復制為FolderCopyC
fso.CopyFolder folderPathA, folderPathC, True

'也可以通過Folder對象來操作
Set folder = fso.GetFolder(folderPathA)
folder.Copy folderPathB, True
folder.Copy folderPathC, True

Set fso = Nothing
%>

請注意目標路徑結尾的反斜杠的作用。如果目標路徑以反斜杠結尾,則認為該路徑是已經存在的,源文件夾將被復制到該路徑下面,否則,源文件夾將被復制為路徑指定的名字。此例運行后,幾個文件夾的層次結構如下:

在CopyFolder方法中,指定源文件夾可以使用通配符,從而實現多個文件夾的批量復制。

通配符可以用“? ”和“*”,前者代表單個字符,后者代表任意多個字符。如“a? b. txt”表示“a”開頭,然后是任意一個字符(也可以是0個字符,即沒有字符),然后是“b.txt”這樣的文件名;而“a*b.txt” 表示“a”開頭,然后是任意多個字符(也可以沒有),然后是“b.txt”這樣的文件名。

通配符只能在路徑的最后部分使用,如“c:\aa\bb\admin_*”是可以的,而“c:\aa\*\admin_*”是不行的。

通配符不能在目標文件夾上使用。

3. 移動文件夾

移動文件夾可以使用FSO對象的MoveFolder方法或Folder對象的Move方法,格式如下:

fso.moveFolder 源文件夾,目標文件夾
folder.Move 目標文件夾

同樣,如果目標路徑以反斜杠結尾,則認為該路徑是已經存在的,源文件夾將被移動到該路徑下面,否則,源文件夾將被移動為路徑指定的名字。前一種情況下,要求目標文件夾必須已經存在,后一種情況下,則要求目標文件夾一定不能存在,移動文件夾并不會覆蓋已有的同名文件夾。

移動文件夾兼有重命名的作用,如以下語句將把FolderA重命名為FolderB。

fso.MoveFolder "C:\aa\FolderA", "C:\aa\FolderB"

下例將把FolderMoveA文件夾改名為FolderMoveB,然后將它移動到FolderMoveC下面。

FolderMove.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

'注意目標路徑結尾的反斜杠的作用
folderPathA = Server.MapPath(".") & "\FolderMoveA"
folderPathB = Server.MapPath(".") & "\FolderMoveB"
folderPathC = Server.MapPath(".") & "\FolderMoveC\"

Set fso = CreateObject("Scripting.FileSystemObject")

'將FolderMoveA目錄移動為FolderMoveB
'源文件夾必須存在,而目標文件夾必須不存在
If fso.FolderExists(folderPathA) And Not fso.FolderExists(folderPathB) Then
    fso.MoveFolder folderPathA, folderPathB
Else
    Response.Write "源文件夾不存在,或目標文件夾已存在"
    Response.End
End If

'再將FolderMoveB目錄移動到FolderMoveC下
'源文件夾必須存在,而目標文件夾也必須存在
If fso.FolderExists(folderPathB) And fso.FolderExists(folderPathC) Then
    fso.MoveFolder folderPathB, folderPathC
Else
    Response.Write "源文件夾不存在,或目標文件夾不存在"
    Response.End
End If

Set fso = Nothing
%>

MoveFolder方法也支持批量移動,當然,只能將多個文件夾移動到某個已存在的文件夾下面。如下面語句將把以“a”開頭的文件夾都移動到以“b”開頭的文件夾下。

fso.MoveFolder "C:\a*", "C:\b"

4. 刪除文件夾

刪除文件夾可以使用FSO對象的DeleteFolder方法或Folder對象的Delete方法,格式如下:

fso.deleteFolder 文件夾,是否強制刪除
folder.Delete 是否強制刪除

如果想刪除只讀的文件夾,應該將“是否強制刪除”這個參數置為True,它默認是False。

下例將刪除當前目錄下的FolderDeleteA文件夾。

FolderDelete.asp

<%@codepage=936%>
<%
Response.Charset = "GBK"

'要刪除的文件夾
folderPathA = Server.MapPath(".") & "\FolderDeleteA"

Set fso = CreateObject("Scripting.FileSystemObject")

'判斷文件夾是否存在
If fso.FolderExists(folderPathA) Then
    fso.DeleteFolder folderPathA, True     '刪除只讀文件夾
Else
    Response.Write "文件夾不存在"
End If

Set fso = Nothing
%>

DeleteFolder方法也支持批量刪除,如下面語句將刪除C盤根目錄下的以“a”開頭的所有文件夾。

fso.DeleteFolder "C:\a*", True
主站蜘蛛池模板: 通城县| 安徽省| 泸州市| 遂平县| 延安市| 鄂托克前旗| 长子县| 安丘市| 桃源县| 敦煌市| 丰宁| 扎赉特旗| 伊川县| 株洲市| 灵山县| 清苑县| 家居| 孝义市| 交口县| 平遥县| 日喀则市| 宣汉县| 安阳县| 吉水县| 呼和浩特市| 安远县| 灵丘县| 伊宁市| 新龙县| 永清县| 河间市| 安塞县| 巴林左旗| 永寿县| 交城县| 两当县| 闵行区| 天全县| 密云县| 广饶县| 百色市|