VBS基礎(chǔ)篇 - FileSystemObject對(duì)象詳解
下面是轉(zhuǎn)摘的關(guān)于FileSystemObject的詳細(xì)介紹,TextStream是其中的一個(gè)子對(duì)象。
前言
最近一直在學(xué)VBScript,網(wǎng)上相關(guān)的教程也有很多,但大多數(shù)的對(duì)象都放在ASP中講解,對(duì)于沒(méi)有學(xué)過(guò)ASP的同學(xué)來(lái)說(shuō)就非常郁悶了。所以打算把在學(xué)習(xí)FileSystemObject及TextStream中所常用的屬性和方法寫出來(lái)供大家來(lái)學(xué)習(xí),如有不妥的地方請(qǐng)予以指出。
備注:所有的腳本均在QTP 9.0中測(cè)試過(guò)。
FileSystemObject對(duì)象概述
FileSystemObject 對(duì)象的作用:提供對(duì)計(jì)算機(jī)文件系統(tǒng)的訪問(wèn),它允許我們?cè)诖a內(nèi)操作文本文件、文件夾及驅(qū)動(dòng)器。FileSystemObject 對(duì)象提供一個(gè)屬性和一系列方法,可用它們來(lái)操縱 FileSystemObject 對(duì)象實(shí)現(xiàn)的一些從屬對(duì)象。這里提供了全部的內(nèi)容概要,然后介紹每一個(gè)從屬對(duì)象。
一、FileSystemObject 對(duì)象的屬性
FileSystemObject 對(duì)象只有一個(gè)屬性,它用于得到當(dāng)前機(jī)器上的所有有效驅(qū)動(dòng)器的列表,如表1所示:
|
表1 FileSystemObject 對(duì)象的屬性和說(shuō)明 |
|
|
屬性 |
說(shuō)明 |
|
Drivers |
返回本地計(jì)算機(jī)可用的驅(qū)動(dòng)器列表 |
‘如下腳本就可以獲得FileSystemObject的Drivers屬性
Set objFSO = CreateObject ("Scripting.FileSystemObject")
Set colDrivers = objFSO.Drivers
正如已經(jīng)看到的,F(xiàn)ileSystemObject 對(duì)象包含一個(gè)屬性——Drives,它返回一個(gè)包括本地計(jì)算機(jī)上所有可用驅(qū)動(dòng)器的集合。
Drives 集合里的每個(gè)條目是一個(gè) Drive 對(duì)象。Drive 對(duì)象的屬性如表2所示:
|
表2 Drive 對(duì)象的屬性及說(shuō)明 |
|
|
方法 |
說(shuō)明 |
|
AvailableSpave |
考慮了帳戶定額和/或其他限制,返回驅(qū)動(dòng)器上對(duì)于該用戶可用的空間的大小 |
|
DriveLetter |
返回驅(qū)動(dòng)器的字母 |
|
DriveType |
返回驅(qū)動(dòng)器的類型。返回值可以是 Unknown(0)、Removeable(1)、Fixed(2)、Network(3)、CDRom(4) 和 RamDisk(5)。然而需要注意的是當(dāng)前版本的 scrrun.dll 不支持預(yù)定義常數(shù) Network,必須使用十進(jìn)制 3 來(lái)代替 |
|
FileSystem |
返回驅(qū)動(dòng)器文件系統(tǒng)的類型。返回值包括“FAT”、“NTFS”和“CDFS” |
|
FreeSpace |
返回驅(qū)動(dòng)器上可用剩余空間的總量 |
|
IsReady |
返回一個(gè)布爾值表明驅(qū)動(dòng)器是否已準(zhǔn)備好 |
|
Path |
返回一個(gè)由驅(qū)動(dòng)器字母和冒號(hào)組成的驅(qū)動(dòng)器路徑,即“C:” |
|
RootFolder |
返回代表的驅(qū)動(dòng)器根目錄文件夾的 Folder 對(duì)象 |
|
SerialNumber |
返回一個(gè)用于識(shí)別磁盤卷的十進(jìn)制的序列號(hào) |
|
ShareName |
如果是一個(gè)網(wǎng)絡(luò)驅(qū)動(dòng)器,返回該驅(qū)動(dòng)器的網(wǎng)絡(luò)共享名 |
|
TotalSize |
返回驅(qū)動(dòng)器的總?cè)萘浚ㄒ宰止?jié)為單位) |
|
VolumeName |
設(shè)定或返回本地驅(qū)動(dòng)器卷名 |
因此,通過(guò)使用 Drives 集合里的 Drive 對(duì)象,可以在服務(wù)器上產(chǎn)生一個(gè)驅(qū)動(dòng)器列表,與通過(guò)檢查每個(gè)可能的驅(qū)動(dòng)器字母來(lái)判別驅(qū)動(dòng)器是否存在的方法相比,效率更高。我們也可以得到關(guān)于該驅(qū)動(dòng)器的信息。
示例:
' 創(chuàng)建FileSystemObject對(duì)象
Set objFSO = CreateObject("Scripting.FileSystemObject")
' 創(chuàng)建Drives集合,并賦值給colDrives
Set colDrives = objFSO.Drives
' 遍歷Drives集合
For Each objDrive in colDrives
'判斷驅(qū)動(dòng)器是否已準(zhǔn)備好
If objDrive.IsReady Then
msg = "驅(qū)動(dòng)器的名稱為:" & objDrive.DriveLetter & " "
msg =msg & "驅(qū)動(dòng)器文件系統(tǒng)的類型:" & objDrive.FileSystem &" "
msg = msg & "驅(qū)動(dòng)器的總?cè)萘浚? & int(objDrive.TotalSize/(1024*1024*1024)) & "G "
msg = msg & "剩余空間的總量:" & int(objDrive.FreeSpace/(1024*1024*1024)) & "G "
End If
Next
reporter.ReportEvent micDone ,"遍歷Drives集合",msg
備注:在系統(tǒng)上運(yùn)行這段程序以前有一點(diǎn)要注意。如果在 A 驅(qū)動(dòng)器里沒(méi)有磁盤,或 CD-ROM 驅(qū)動(dòng)器里沒(méi)有光盤,將得到一個(gè)錯(cuò)誤提示:“Disk Not Ready”。除了 DriveLetter 屬性和 DriveType 屬性外,在使用其他屬性和方法前,通過(guò)檢查每個(gè)驅(qū)動(dòng)器的 IsReady 屬性,可以保護(hù)該頁(yè)面。
二、FileSystemObject 對(duì)象的方法
1. 與驅(qū)動(dòng)器有關(guān)的方法
|
表3 與驅(qū)動(dòng)器有關(guān)的方法及說(shuō)明 |
|
|
方法 |
說(shuō)明 |
|
DriveExists(drivespec) |
如果在 drivespec 中指定的驅(qū)動(dòng)器存在,則返回 True,否則返回 False。drivespec 參數(shù)可以是一個(gè)驅(qū)動(dòng)器字母,或者是文件、文件夾的完整絕對(duì)路徑 |
|
GetDrive(drivespec) |
返回 drivespec 指定的驅(qū)動(dòng)器所對(duì)應(yīng)的Drive對(duì)象。drivespec 可以包含冒號(hào)、路徑分隔符或者是網(wǎng)絡(luò)共享名,即:“C”、“C:”、“C:”及“/machinesharename” |
|
GetDriveName(drivespec) |
用字符串返回 drivespec 指定的驅(qū)動(dòng)器的名稱。drivespec 參數(shù)必須是文件或文件夾的絕對(duì)路徑,或者僅僅是驅(qū)動(dòng)器字母,例如:“c:”或“c” |
DriveExists的使用
方法名:DriveExists(drivespec)
說(shuō)明:如果在 drivespec 中指定的驅(qū)動(dòng)器存在,則返回 True,否則返回 False。drivespec 參數(shù)可以是一個(gè)驅(qū)動(dòng)器字母,或者是文件、文件夾的完整絕對(duì)路徑
示例:
' 創(chuàng)建FileSystemObject對(duì)象
Set objFSO = CreateObject ("Scripting.FileSystemObject")
For intCode = 65 To 90 'ANSI codes for 'A' to 'Z'
strLetter = Chr(intCode) 'Chr:返回與指定的 ANSI 字符代碼相對(duì)應(yīng)的字符。
If objFSO.DriveExists(strLetter) Then '判斷相應(yīng)的盤符是否存在,如存在輸出
Reporter.ReportEvent micDone,"Show Drive”,” Found drive " & strLetter
End If
Next
另外,如果已知要訪問(wèn)的驅(qū)動(dòng)器、文件夾或文件??梢灾苯訉?duì)其使用 GetDrive、GetFolder、GetSpecialFolder 和 GetFile 方法。
2. 與文件夾有關(guān)的方法及屬性
用FileSystemObject對(duì)象來(lái)操作文件夾的方法:
|
表4 與文件夾有關(guān)的方法及說(shuō)明 |
|
|
方法 |
說(shuō)明 |
|
BuildPath(path,name) |
在已有的路徑 path 上增添名字為 name 的文件或文件夾,如果需要,則增添路徑分隔符' ' |
|
CopyFolder(source,destination,overwrite) |
從指定的源文件夾 source(可以包含通配符)中復(fù)制一個(gè)或多個(gè)文件夾到指定的目標(biāo)文件夾 destination,包含了源文件夾中的所有文件。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘'),那么認(rèn)為 destination 是要放置源文件夾的拷貝的文件夾。否則的話,認(rèn)為 destination 是要?jiǎng)?chuàng)建的新文件夾的路徑名。如果 destination 文件夾已經(jīng)存在且 overwrite 參數(shù)設(shè)置為 False,將產(chǎn)生錯(cuò)誤,缺省的 overwrite 參數(shù)是True |
|
CreateFolder(foldername) |
創(chuàng)建一個(gè)路徑名為 foldername 的文件夾。如果 foldername 已經(jīng)存在將產(chǎn)生錯(cuò)誤 |
|
DeleteFolder(folderspec,force) |
刪除由 folderspec 指定的一個(gè)或多個(gè)文件夾(可以在路徑的最后部分包含通過(guò)配符)及文件夾中的所有內(nèi)容。如果可選的 force 參數(shù)設(shè)置為 true,那么即使文件夾包含的文件具有只讀屬性,也將刪除該文件夾。缺省的 force 參數(shù)是 False |
|
FolderExists(folderspec) |
如果 folderspec 指定的文件夾存在則返回 True,否則返回 False。folderspec 參數(shù)可以包含文件夾的絕對(duì)或相對(duì)路徑,或者僅僅是當(dāng)前文件夾中看到的文件夾名 |
|
GetAbsolutePathName(pathspec) |
返回明確指定文件夾的路徑,其中要考慮到當(dāng)前文件夾的路徑。例如,如果當(dāng)前文件夾是“c:docssales”,而pathspec是“jan”,返回的字符是“c:docssalesjan”。通配符、”..”和”/”路徑操作符都是可以接受的 |
|
GetFolder(folderspec) |
返回 folderspec 指定的文件夾對(duì)應(yīng)的 Folder 對(duì)象。folderspec 可以是文件夾的相對(duì)的或絕對(duì)的路徑 |
|
GetParentFolderName(pathspec) |
返回pathspec 文件或文件夾的上一級(jí)文件夾。不檢驗(yàn)該文件夾是否存在 |
|
GetSpecialfolder(folderspec) |
返回一個(gè)特定的 Windows 文件夾相對(duì)應(yīng)的 Folder 對(duì)象。參數(shù) folderspec 的允許值是WindowsFolder(0)、SystemFolder(1) 和 TemporaryFolder(2) |
|
MoveFolder(source,destination) |
將 source 指定的一個(gè)或多個(gè)文件夾移動(dòng)到 destination 指定的文件夾。在 source 里可以包含通配符,但在 destination 中不行。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘'),則認(rèn)為 destination 是要放置源文件夾的文件夾,否則認(rèn)為它是一個(gè)新文件夾的完整路徑和名字。如果目的文件夾 destination 已經(jīng)存在則產(chǎn)生錯(cuò)誤 |
CopyFolder的使用
方法名:CopyFolder(source,destination,overwrite)
說(shuō)明:將文件夾從某位置遞歸復(fù)制到另一位置。詳細(xì)說(shuō)明請(qǐng)查看表4。
示例:
' 創(chuàng)建FileSystemObject對(duì)象
Set objfso = createobject("scripting.FileSystemObject")
' 將D:/test下所有的內(nèi)容復(fù)制到c:/123
objfso.CopyFolder "D:/test","c:/123"
注:如果c:/123不存在,則QTP將自動(dòng)創(chuàng)建它
CreateFolder及DeleteFolder的使用
方法名:CreateFolder(foldername)/DeleteFolder(folderspec,force)
說(shuō)明:創(chuàng)建/刪除一個(gè)路徑名為 foldername 的文件夾。詳細(xì)說(shuō)明請(qǐng)查看表4。
示例:
' 創(chuàng)建FileSystemObject對(duì)象
Set objfso = createobject("scripting.FileSystemObject")
‘ 在c:/創(chuàng)建new folder文件夾,如果文件夾存在,則會(huì)出現(xiàn)錯(cuò)誤提示
objfso.CreateFolder("c:/new folder")
‘ 刪除c:/new folder文件夾
objfso.DeleteFolder("c:/new folder")
注:DeleteFolder無(wú)論文件夾是否包含內(nèi)容,都將刪除該文件夾
FolderExists的使用
方法名:FolderExist(folderspec)
說(shuō)明:如果指定的文件夾存在,則返回 True;否則返回 False。詳細(xì)說(shuō)明請(qǐng)查看表4。
示例:
Function hanshu(strpath)
Dim objfso,objset
‘ 創(chuàng)建FileSystemObjec對(duì)象
Set objfso = CreateObject("Scripting.FileSystemObject")
‘ 判斷在指定的路徑中是否有
If Not objfso.FolderExists(strpath) Then
objset = objfso.CreateFolder(strpath)
else
objset = objfso.DeleteFolder(strpath)
End If
hanshu = objset
End Function
hanshu("c:/new folder")
GetAbsolutePathName的使用
方法名:GetAbsolutePathName(pathspec)
說(shuō)明:從提供的指定路徑中返回完整且含義明確的路徑。詳細(xì)說(shuō)明請(qǐng)查看表4。
示例:
Dim objfso
‘創(chuàng)建FileSystemObject對(duì)象
Set objfso = createobject("Scripting.FileSystemObject")
‘返回當(dāng)前的目錄,下面兩條語(yǔ)句返回一樣的結(jié)果
msgbox (objfso.GetAbsolutePathName(""))
msgbox (objfso.GetAbsolutePathName("C:"))
GetFolder的使用
方法名:GetFolder(folderspec)
說(shuō)明:返回與指定的路徑中某文件夾相應(yīng)的 Folder 對(duì)象??梢愿鶕?jù)所返回的Folder 對(duì)象,再去訪問(wèn)該Folder 對(duì)象所持有的屬性。
示例:
Dim objfso,objset
'創(chuàng)建FileSystemObject對(duì)象
Set objfso = createobject("Scripting.FileSystemObject")
'返回C:/testing的Folder的對(duì)象
Set objset = objfso.GetFolder("C:/testing")
' 根據(jù)所返回的Folder對(duì)象,去訪問(wèn)其相關(guān)的屬性
reporter.ReportEvent micDone ,"Folder對(duì)象的相關(guān)屬性","文件夾創(chuàng)建的日期:" & objset.DateCreated &"; 文件夾所在的驅(qū)動(dòng):" & objset.Drive & "; 文件夾的名字:" & objset.Name
注:關(guān)于Folder對(duì)象的屬性,將在下面會(huì)詳細(xì)介紹
GetParentFolderName的使用
方法名:GetParentFolderName(pathspec)
說(shuō)明:返回字符串,該字符串包含指定的路徑中最后一個(gè)文件或文件夾的父文件夾。
示例:
Dim objfso
'創(chuàng)建FileSystemObject對(duì)象
Set objfso = createobject("Scripting.filesystemobject")
'使用GetParentFolderName方法來(lái)返回上一層文件夾
msgbox (objfso.GetParentFolderName("C:/WINDOWS/addins"))
GetSpecialFolder的使用
方法名:GetSpecialFolder(folderspec)
說(shuō)明:返回指定的特殊文件夾。詳細(xì)說(shuō)明請(qǐng)查看表4。
示例:
Dim fso,tempName
Set fso = CreateObject("Scripting.FileSystemObject")
'GetSpecialFolder()中的參數(shù)2,返回一個(gè)名為Temp的臨時(shí)文件夾
Set tempName = fso.GetSpecialFolder(2)
msgbox tempName
MoveFolder的使用
方法名:MoveFolder(source,destination)
說(shuō)明:將一個(gè)或多個(gè)文件夾從某位置移動(dòng)到另一位置。詳細(xì)說(shuō)明請(qǐng)查看表4。
示例:
Dim sourcepath,destination
sourcepath = "C:/testing"
destination = "C:/123"
'調(diào)用MoveFolders方法
call MoveFolders(sourcepath,destination)
Sub MoveFolders(sourcepath,destination)
Dim fso
'創(chuàng)建FileSystemObject對(duì)象
Set fso = CreateObject("Scripting.FileSystemObject")
'使用MoveFolder方法,將testing文件夾的內(nèi)容移動(dòng)到123文件夾下
fso.MoveFolder sourcepath,destination
End Sub
注:如果腳本在運(yùn)行前文件夾123已存在,則運(yùn)行是會(huì)發(fā)生錯(cuò)誤;在不同的磁盤下MoveFolder方法不能用
上面提到的Folder方法是基于FileSystemObject 對(duì)象的,現(xiàn)在我們來(lái)看看基于Folder對(duì)象的方法。
Folder對(duì)象所提供的方法
Folder 對(duì)象提供一組可用于復(fù)制、刪除和移動(dòng)當(dāng)前文件夾的方法。這些方法的運(yùn)行方式與 FileSystemObject 對(duì)象的CopyFolder、DeleFolder 和 MoveFolder 方法相同,但這些方法不要求 source 參數(shù),因?yàn)樵次募褪沁@個(gè)文件夾。
備注:CopyFolder、DeleFolder等方法是基于FileSystemObject 對(duì)象的;而下面的Copy、Delete等方法是基于FileSystemObject對(duì)象下的Folder對(duì)象,他們實(shí)現(xiàn)的功能是類似的。
|
表5 Folder 對(duì)象的方法及說(shuō)明 |
|
|
方法 |
說(shuō)明 |
|
Copy(destination,overwrite) |
將這個(gè)文件夾及所有的內(nèi)容復(fù)制到 destination 指定的文件夾。如果 destination 的末尾是路徑分隔符(‘'),那么認(rèn)為 destination 是放置拷貝文件夾的一個(gè)文件夾。否則認(rèn)為 destination 是要?jiǎng)?chuàng)建的新文件夾的路徑和名字。如果目標(biāo)文件夾已經(jīng)存在且 overwrite 參數(shù)設(shè)置為 False,將產(chǎn)生錯(cuò)誤,缺省的 overwrite 參數(shù)是 True |
|
Delete(force) |
刪除文件夾及里面的所有內(nèi)容。如果可選的 force 參數(shù)設(shè)置為 True,即使文件夾設(shè)置為只讀或含有只讀的文件,也將刪除該文件夾。缺省的 force 是 False |
|
Move(destination) |
將文件夾及里面所有的內(nèi)容移動(dòng)到 destination 指定的文件夾。如果 destination 的末尾是路徑分隔符(‘'),那么認(rèn)為 destination 是放置移動(dòng)文件夾的一個(gè)文件夾。否則認(rèn)為 destination 是一個(gè)新的文件夾的路徑和名字。如果目標(biāo)文件夾已經(jīng)存在,則出錯(cuò) |
|
CreateTextFile(filename,overwrite,unicode) |
用指定的文件名在文件夾內(nèi)創(chuàng)建一個(gè)新的文件,并且返回一個(gè)相應(yīng)的TextStream 對(duì)象。如果可選的 overwrite參數(shù)設(shè)置為True,將覆蓋任何已有的同名文件。缺省的overwrite 參數(shù)是 False。如果可選的 unicode 參數(shù)設(shè)置為 True,文件的內(nèi)容將存儲(chǔ)為 unicode 文本。缺省的 unicode 是 False |
Copy的使用
方法名:Copy(destination,overwrite)
說(shuō)明:將文件夾的所有內(nèi)容,復(fù)制到destination文件夾中。詳細(xì)說(shuō)明請(qǐng)見(jiàn)表5
示例:
Dim sourcepath
sourcepath = "C:/testing"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset
Set fso = CreateObject("Scripting.FileSystemObject")
'使用GetFolder方法來(lái)返回Folder對(duì)象
Set objset = fso.getFolder(sourcepath)
'將testing中的所有內(nèi)容復(fù)制到123文件夾中
objset.Copy("d:/123")
End Sub
備注:如果目標(biāo)文件夾不存在,則腳本在運(yùn)行是將自動(dòng)創(chuàng)建
Delete的使用
方法名:Delete(force)
說(shuō)明:刪除文件夾及里面的所有內(nèi)容。詳細(xì)說(shuō)明請(qǐng)見(jiàn)表5
示例:
Dim sourcepath
sourcepath = "C:/testing"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset
Set fso = CreateObject("Scripting.FileSystemObject")
'使用GetFolder方法來(lái)返回Folder對(duì)象
Set objset = fso.getFolder(sourcepath)
'將testingw文件夾及文件夾里所有的內(nèi)容全部刪除
objset.Delete(True)
End Sub
備注:如果文件夾屬性為只讀且Delete的參數(shù)為False,則腳本在運(yùn)行是將提示“沒(méi)有權(quán)限”;當(dāng)文件夾不存在時(shí),將提示“路徑未找到”。
Move的使用
方法名:Move(destination)
說(shuō)明:將文件夾及里面所有的內(nèi)容移動(dòng)到 destination 指定的文件夾。詳細(xì)說(shuō)明請(qǐng)見(jiàn)表5
示例:
Dim sourcepath
sourcepath = "C:/testing"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset
Set fso = CreateObject("Scripting.FileSystemObject")
'使用GetFolder方法來(lái)返回Folder對(duì)象
Set objset = fso.getFolder(sourcepath)
'使用Move()將testing文件夾及里面所有的內(nèi)容,移動(dòng)到目標(biāo)文件夾123中
objset.Move("C:/123")
End Sub
備注:如果目標(biāo)文件夾123已存在,則腳本運(yùn)行時(shí)提示“文件已存在”;如果目標(biāo)文件夾123在D:/,則腳本運(yùn)行使提示“沒(méi)有權(quán)限”
CreateTextFile的使用
方法名:CreateTextFile(filename,overwrite,unicode)
說(shuō)明:創(chuàng)建指定文件并返回 TextStream 對(duì)象,該對(duì)象可用于讀或?qū)憚?chuàng)建的文件。詳細(xì)說(shuō)明請(qǐng)見(jiàn)表5。
示例:
Dim sourcepath
sourcepath = "C:/testing"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset
Set fso = CreateObject("Scripting.FileSystemObject")
'使用GetFolder方法來(lái)返回Folder對(duì)象
Set objset = fso.getFolder(sourcepath)
'在testing文件夾下,使用CreateTextFile()創(chuàng)建myClass2.doc文件
objset.CreateTextFile "myClass2.doc",true
End Sub
備注:CreateTextFile()所創(chuàng)建的文件類型是根據(jù)所提供的擴(kuò)展名來(lái)確定的,如也可以寫成myClass2.txt、myClass.exe等等;FileSystemObject對(duì)象也可以調(diào)用CreateTextFile(),我們可以將上面的代碼改寫成:
fso.CreateTextFile “C:/testing/myClass.doc”,true
Folder對(duì)象所提供的屬性:
|
表6 Folder 對(duì)象的屬性及說(shuō)明 |
|
|
屬性 |
說(shuō)明 |
|
Attributes |
返回文件夾的屬性??梢允窍铝兄抵械囊粋€(gè)或其組合:Normal(0)、ReadOnly(1)、Hidden(2)、System(4)、Volume(名稱)(8)、Directory(文件夾)(16)、Archive(32)、Alias(64) 和 Compressed(128)。例如,一個(gè)隱藏的只讀文件,Attributes 的值為 3 |
|
DateCreated |
返回該文件夾的創(chuàng)建日期和時(shí)間 |
|
DateLastAccessed |
返回最后一次訪問(wèn)該文件夾的日期和時(shí)間 |
|
DateLastModified |
返回最后一次修改該文件夾的日期和時(shí)間 |
|
Drive |
返回該文件夾所在的驅(qū)動(dòng)器的驅(qū)動(dòng)器字母 |
|
Files |
返回 Folder 對(duì)象包含的 Files 集合,表示該文件夾內(nèi)所有的文件 |
|
IsRootFolder |
返回一個(gè)布爾值說(shuō)明該文件夾是否是當(dāng)前驅(qū)動(dòng)器的根文件夾 |
|
Name |
設(shè)定或返回文件夾的名字 |
|
ParentFolder |
返回該文件夾的父文件夾對(duì)應(yīng)的 Folder 對(duì)象 |
|
Path |
返回文件夾的絕對(duì)路徑,使用相應(yīng)的長(zhǎng)文件名 |
|
ShortName |
返回 DOS 風(fēng)格的 8.3 形式的文件夾名 |
|
ShortPath |
返回 DOS 風(fēng)格的 8.3 形式的文件夾的絕對(duì)路徑 |
|
Size |
返回包含在該文件夾里所有文件和子文件夾的大小 |
|
SubFolers |
返回該文件夾內(nèi)包含的所有子文件夾對(duì)應(yīng)的 Folders 集合,包括隱藏文件夾和系統(tǒng)文件夾 |
|
Type |
如果可能,返回一個(gè)文件夾的說(shuō)明字符串(例如,“Recycle Bin”) |
如上面提到的,我們可以使用下面的腳本來(lái)訪問(wèn)Folder對(duì)象
Dim objfso,objset
'創(chuàng)建FileSystemObject對(duì)象
Set objfso = createobject("Scripting.FileSystemObject")
'返回C:/testing的Folder的對(duì)象
Set objset = objfso.GetFolder("C:/testing")
注:通過(guò)Folder對(duì)象我們就可以訪問(wèn)其提供的方法及屬性
Drive、DateCreated、Name屬性的使用
示例:
Dim sourcepath
sourcepath = "C:/testing"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset
Set fso = CreateObject("Scripting.FileSystemObject")
'使用GetFolder方法來(lái)返回Folder對(duì)象
Set objset = fso.getFolder(sourcepath)
'通過(guò)Folder對(duì)象來(lái)訪問(wèn)Folder屬性
reporter.ReportEvent micDone ,"測(cè)試Folder屬性","文件夾所在的磁盤為:" & objset.Drive & " 文件夾所創(chuàng)建的日期:" & objset.DateCreated & " 文件夾的名字為:" & objset.Name
End Sub
SubFolers屬性的使用
示例:
Dim sourcepath
sourcepath = "C:/Program Files/Common Files"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objset,objFolders,FolderName,i
i = 0
Set fso = CreateObject("Scripting.FileSystemObject")
'使用GetFolder方法來(lái)返回Folder對(duì)象
Set objset = fso.getFolder(sourcepath)
'SubFolders屬性將返回所有子文件夾對(duì)應(yīng)的Folder集合
Set objFolders = objset.SubFolders
'遍歷Folder集合,統(tǒng)計(jì)出共有多少個(gè)文件夾,及相關(guān)文件夾的名字
For Each objFolder in objFolders
i = i +1
'vbcr為換行符
FolderName = FolderName + objFolder.Name + vbcr
Next
msgbox ("共有" & i &"個(gè)文件夾,文件夾的名字為:" & FolderName)
End Sub
Files屬性的使用
示例:
Dim objFso,objGetFolder,intCount,strFileName
intCount = 0
'創(chuàng)建FileSystemObject對(duì)象
Set objFso= CreateObject("Scripting.FileSystemObject")
'使用GetFolder()獲得文件夾對(duì)象
Set objGetFolder = objFso.GetFolder("C:/test")
'遍歷Files集合并顯示文件夾中所有的文件名
For Each strFile in objGetFolder.Files
intCount = intCount + 1
strFileName =strFileName & "第" & intCount & "個(gè)文件夾名為:" & strFile.Name & vbcr
Next
msgbox strFileName
3. 以文件有關(guān)的方法及屬性
用FileSystemObject對(duì)象來(lái)操作文件的方法:
|
表7 與文件有關(guān)的方法及說(shuō)明 |
|
|
方法 |
說(shuō)明 |
|
CopyFile(source,destination,overwrite) |
將 source(可包含通配符)指定的一個(gè)或多個(gè)文件復(fù)制到指定的目標(biāo)文件夾 destination。如果 source 包含通配符或 destination 末尾是路徑分隔符(‘'),那么認(rèn)為 destination 是文件夾。否則認(rèn)為 destination 為一新文件的完全路徑和名稱。如果目標(biāo)文件夾已經(jīng)存在且 overwrite 參數(shù)設(shè)置為 False,將產(chǎn)生錯(cuò)誤。缺省的 overwrite 參數(shù)是 True |
|
CreateTextFile(filename,overwrite,unicode) |
用指定的文件名 filename 在磁盤上創(chuàng)建一個(gè)新的文本文件,并返回與其對(duì)應(yīng)的 TextStream 對(duì)象,如果可選的 overwrite 參數(shù)設(shè)置為 True,則覆蓋同一路徑下已有的同名文件。缺省的 overwrite 參數(shù)是 False。如果可選的 unicode 參數(shù)設(shè)置為 True,則該文件的內(nèi)容將存儲(chǔ)為 Unicode 文本,缺省的 unicode 參數(shù)是 False |
|
DeleFile(filespec,force) |
刪除由 filespec 指定的一個(gè)或多個(gè)文件(可以在路徑的最后部分包含通配符)。如果可選的 force 參數(shù)設(shè)置為 true,那么也刪除具有只讀屬性的文件。缺省的 force 參數(shù)是False |
|
FileExists(filespec) |
如果 filespec 指定的文件存在則返回 True,否則返回 False。filespec 參數(shù)可以包含文件的絕對(duì)路徑或相對(duì)路徑,或者是當(dāng)前文件夾中的文件名 |
|
GetBaseName(filespec) |
返回 filespec 指定的文件的名稱,即包含文件路徑但去掉了文件的擴(kuò)展名 |
|
GetExtensionName(filespec) |
返回 filespec 指定的文件的擴(kuò)展名 |
|
GetFile(filespec) |
返回 filespec 指定的文件所對(duì)應(yīng)的 File 對(duì)象??梢灾付ㄎ募南鄬?duì)或絕對(duì)路徑 |
|
GetFileName(pathspec) |
返回pathspec 指定的文件的路徑或文件名,如果沒(méi)有文件名就返回最后的文件夾名。不檢查該文件或文件夾是否存在 |
|
GetTempName() |
返回一個(gè)隨機(jī)產(chǎn)生的文件名,用于完成運(yùn)算所需的臨時(shí)文件或文件夾 |
|
MoveFile(source,destination) |
將 source 指定的一個(gè)或多個(gè)源文件移動(dòng)到 destination 指定的目的文件夾。在 source里可以包含通配符,但 destination 不行。如果 source 包含通過(guò)配符或 destination 末尾是路徑分隔符(‘'),那么認(rèn)為 destination 是一文件夾。否則,認(rèn)為 destination 是一新文件夾的完整路徑和名稱。如果目的文件夾已經(jīng)存在則產(chǎn)生錯(cuò)誤 |
|
OpenTextFile(filename,iomode,create,format) |
創(chuàng)建一個(gè)名叫做 filename 的文件,或打開(kāi)一個(gè)現(xiàn)有的名為 filename 的文件,并且返回一個(gè)與其相關(guān)的 TextStream 對(duì)象。filename 參數(shù)可以包含絕對(duì)或相對(duì)路徑。iomode 參數(shù)指定了所要求的訪問(wèn)類型。允許的數(shù)值是 ForReading(1)(缺?。orWriting(2)、ForAppending(8)。當(dāng)寫入或追加到一個(gè)不存在的文件時(shí),如果 create 參數(shù)設(shè)置為 true,就將創(chuàng)建一個(gè)新文件。缺省的 create 參數(shù)是 False。format 參數(shù)說(shuō)明對(duì)文件讀或?qū)懙臄?shù)據(jù)格式。允許數(shù)值是:TristatetFalse(0)(缺?。?,按照 ASCII 格式打開(kāi);TristatetTrue(-1),按照 Unicode 格式打開(kāi);TristateDefault(-2),用系統(tǒng)缺省格式打開(kāi) |
CopyFile及MoveFile的使用
方法名:CopyFile(source,destination,overwrite)
說(shuō)明:將一個(gè)或多個(gè)文件從某位置復(fù)制到另一位置。詳細(xì)說(shuō)明請(qǐng)見(jiàn)表7
方法名:MoveFile(source,destination)
說(shuō)明:將 source 指定的一個(gè)或多個(gè)源文件移動(dòng)到 destination 指定的目的文件夾。
示例:
Dim sourcepath,targetpath
sourcepath = "C:/testing/*.txt"
targetpath = "C:/123/"
Call FolderAttributes(sourcepath,targetpath)
Sub FolderAttributes(sourcepath,targetpath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'將testing文件夾下所有擴(kuò)展名名為.txt的文件,復(fù)制到123文件夾下
fso.CopyFile sourcepath,targetpath
fso.MoveFile sourcepath,targetpath
End Sub
備注:如果C:/123文件夾不存在,則腳本運(yùn)行時(shí)提示“路徑不存在”
CreateTextFile及DeleteFile的使用
方法名:CreateTextFile(filename,overwrite,unicode)
說(shuō)明:創(chuàng)建指定文件并返回 TextStream 對(duì)象,該對(duì)象可用于讀或?qū)憚?chuàng)建的文件。
方法名:DeleFile(filespec,force)
說(shuō)明:刪除指定的文件。詳細(xì)說(shuō)明請(qǐng)見(jiàn)表7.
示例:
Dim sourcepath
sourcepath = "C:/testing/ myClass2.doc "
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'在testing文件夾下,使用CreateTextFile()創(chuàng)建myClass2.doc文件
fso.CreateTextFile sourcepath,true
'刪除testing文件夾下,所有擴(kuò)展名為.txt的文件
fso.DeleteFile sourcepath,true
End Sub
備注:如果所刪除的文件為只讀屬性且DeleteFile()的參數(shù)為false的話,則腳本運(yùn)行是出現(xiàn)“沒(méi)有權(quán)限”FileExists的使用
方法名:FileExists(filespec)
說(shuō)明:判斷所指定的文件是否存在。此方法將返回Bool值. 詳細(xì)說(shuō)明請(qǐng)見(jiàn)表7.
示例:
Dim sourcepath
sourcepath = "C:/testing/test.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'判斷C:/testing/test.txt是否有存在,如果存在返回“true”;否則返回“false”
If fso.FileExists(sourcepath) Then
msgbox "true"
else
msgbox "false"
End If
End Sub
GetBaseName、GetFileName及GetExtensionName的使用
方法名:GetBaseName(filespec)
說(shuō)明:返回字符串,文件 (不帶擴(kuò)展名), 或者提供的路徑說(shuō)明中的文件夾。
方法名:GetExtensionName(filespec)
說(shuō)明:返回字符串,該字符串包含路徑最后一個(gè)組成部分的擴(kuò)展名。
方法名:GetFileName(pathspec)
說(shuō)明:返回指定路徑(不是指定驅(qū)動(dòng)器路徑部分)的最后一個(gè)文件或文件夾。
示例:
Dim sourcepath
sourcepath = "C:/testing/test.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
'返回文件名test, 擴(kuò)展名 txt, 文件名+擴(kuò)展名 test.txt
Msgbox (fso.GetBaseName(sourcepath))
Msgbox (fso. GetExtensionName(sourcepath))
Msgbox (fso.GetFileName(sourcepath))
End Sub
GetFile的使用
方法名:GetFile(filespec)
說(shuō)明:返回與指定路徑中某文件相應(yīng)的 File 對(duì)象,既而可以訪問(wèn)到File的屬性。
示例:
Dim sourcepath
sourcepath = "C:/testing/778899.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objFile
Set fso = CreateObject("Scripting.FileSystemObject")
'調(diào)用GetFile()返回File對(duì)象,通過(guò)File對(duì)象來(lái)訪問(wèn)其下的屬性
set objFile = fso.GetFile(sourcepath)
reporter.ReportEvent micDone,"訪問(wèn)file的屬性","該文件所在的盤符為:" & objFile.Drive & " 文件名為:" & objFile.Name
End Sub
注:關(guān)于File對(duì)象的屬性,將在下面會(huì)詳細(xì)介紹
GetTempName的使用
方法名:GetTempName()
說(shuō)明:返回隨機(jī)生成的臨時(shí)文件或文件夾的名稱,用于執(zhí)行要求臨時(shí)文件或文件夾的操作
示例:
Dim fso, tempfile
'創(chuàng)建FileSystemObject對(duì)象
Set fso = CreateObject("Scripting.FileSystemObject")
'調(diào)用CreateTempFile函數(shù),并將對(duì)象賦值給tempfile
Set tempfile = CreateTempFile
'在臨時(shí)文件中寫入字符
tempfile.WriteLine "世界你好"
'關(guān)閉對(duì)象
tempfile.Close
Function CreateTempFile
Dim tfolder, tname, tfile
Const TemporaryFolder = 2
'GetSpecialFolder()中的參數(shù)2,返回一個(gè)名為Temp的臨時(shí)文件夾
Set tfolder = fso.GetSpecialFolder(TemporaryFolder)
'隨機(jī)生成一個(gè)臨時(shí)文件名
tname = fso.GetTempName
'在Temp臨時(shí)文件夾下面,創(chuàng)建一個(gè)臨時(shí)文件
Set tfile = tfolder.CreateTextFile(tname)
'將結(jié)果賦值給函數(shù)
Set CreateTempFile = tfile
End Function
備注:GetTempName 方法不創(chuàng)建文件,該方法僅提供臨時(shí)文件名。示例中的的結(jié)果,默認(rèn)保存在C:/Documents and Settings/Administrator/Local Settings/Temp
OpenTextFile的使用
方法名:(filename,iomode,create,format)
說(shuō)明:打開(kāi)指定的文件并返回一個(gè) TextStream 對(duì)象,可以讀取、寫入此對(duì)象或?qū)⑵渥芳拥轿募?。詳?xì)的說(shuō)明見(jiàn)表7.
示例:
Dim spec
spec = "C:/testing.txt"
'三個(gè)參數(shù)的分別為:以只讀模式打開(kāi)文件、以只寫方式打開(kāi)文件、打開(kāi)文件并在文件末尾進(jìn)行寫操作
Const intForReading = 1,intForWriting = 2,intForAppending = 8
'調(diào)用OpenTextFileTest()
Call OpenTextFileTest(spec,intForAppending)
Sub OpenTextFileTest(sepc,intForAppending)
Dim fso,objTStream
'創(chuàng)建FileSystemObject對(duì)象
Set fso = CreateObject("Scripting.FileSystemObject")
'參數(shù)true表示:如果文件不存在,則創(chuàng)建文件。最后OpenTextFile()將返回TextStream對(duì)象
Set objTStream = fso.OpenTextFile(sepc,intForAppending,true)
'利用TextStream對(duì)象來(lái)將字符串寫入文件
objTStream.write "hello word!"
'釋放TextStream對(duì)象
objTStream.close
End Sub
File對(duì)象所提供的屬性
|
表8 File 對(duì)象的屬性及說(shuō)明 |
|
|
屬性 |
說(shuō)明 |
|
Attributes |
返回文件的屬性??梢允窍铝兄抵械囊粋€(gè)或其組合:Normal(0)、ReadOnly(1)、Hidden(2)、System(4)、Volume(名稱)(9)、Directory(文件夾)(16)、Archive(32)、Alias(64) 和 Compressed(128) |
|
DateCreated |
返回該文件夾的創(chuàng)建日期和時(shí)間 |
|
DateLastAccessed |
返回最后一次訪問(wèn)該文件的日期和時(shí)間 |
|
DateLastModified |
返回最后一次修改該文件的日期和時(shí)間 |
|
Drive |
返回該文件所在的驅(qū)動(dòng)器的 Drive 對(duì)象 |
|
Name |
設(shè)定或返回文件的名字 |
|
ParentFolder |
返回該文件的父文件夾的 Folder 對(duì)象 |
|
Path |
返回文件的絕對(duì)路徑,可使用長(zhǎng)文件名 |
|
ShortName |
返回 DOS 風(fēng)格的 8.3 形式的文件名 |
|
ShortPath |
返回 DOS 風(fēng)格的 8.3 形式的文件絕對(duì)路徑 |
|
Size |
返回該文件的大?。ㄗ止?jié)) |
|
Type |
如果可能,返回一個(gè)文件類型的說(shuō)明字符串(例如:“Text Document”表示 .txt 文件) |
我們?cè)谇懊鍲ile對(duì)象的方法中曾提到,可以使用FileSystemObject對(duì)象的GetFile()來(lái)訪問(wèn)File對(duì)象屬性。
訪問(wèn)File對(duì)象屬性的示例如下:
Dim sourcepath
sourcepath = "C:/testing/778899.txt"
Call FolderAttributes(sourcepath)
Sub FolderAttributes(sourcepath)
Dim fso,objFile
Set fso = CreateObject("Scripting.FileSystemObject")
'調(diào)用GetFile()返回File對(duì)象,通過(guò)File對(duì)象來(lái)訪問(wèn)其下的屬性
set objFile = fso.GetFile(sourcepath)
reporter.ReportEvent micDone,"訪問(wèn)file的屬性","該文件所在的盤符為:" & objFile.Drive & " 文件名為:" & objFile.Name
End Sub
備注:File對(duì)象屬性的使用方法和前面介紹的Folder對(duì)象屬性的使用方法一樣,所以在這不一一列出。
TextStream對(duì)象概述
TextStream對(duì)象是用于訪問(wèn)文本文件的對(duì)象,它是FileSystemObject一個(gè)獨(dú)立的附屬對(duì)象,但在使用TextStream對(duì)象時(shí),我們?nèi)砸柚鶩ileSystemObject 對(duì)象或其附屬對(duì)象來(lái)創(chuàng)建一個(gè) TextStream 對(duì)象并訪問(wèn)磁盤文件的內(nèi)容??梢酝ㄟ^(guò)FileSystemObject 對(duì)象的CreateTextFile()及OpenTextFile(),來(lái)獲取TextStream的對(duì)象句柄。
下面我們來(lái)具體的看看TextStream 對(duì)象的方法及屬性的使用。
一、TextStream對(duì)象的方法
|
表9 TextStream 對(duì)象的方法及說(shuō)明 |
|
|
方法 |
說(shuō)明 |
|
Close() |
關(guān)閉一個(gè)打開(kāi)的文件 |
|
Read(numchars) |
從文件中讀出 numchars 個(gè)字符 |
|
ReadAll() |
作為單個(gè)字符串讀出整個(gè)文件 |
|
ReadLine() |
作為一個(gè)字符串從文件中讀出一行(直到回車符和換行) |
|
Skip(numchars) |
當(dāng)從文件讀出時(shí)忽略 numchars 個(gè)字符 |
|
SkipLine() |
當(dāng)從文件讀出時(shí)忽略下一行 |
|
Write(string) |
向文件寫入字符串 string |
|
WriteLine(string) |
向文件寫入字符串 string(可選)和換行符 |
|
WriteBlankLines(n) |
向文件寫入 n 個(gè)換行符 |
Close、Write、WriteLine及WriteBlankLines的使用
方法名:Close()
說(shuō)明:關(guān)閉正在打開(kāi)的文件
方法名:WriteLine(string)
說(shuō)明:向文件寫入字符串 string(可選)和換行符。
示例:
Dim strPath,strText
strPath = "C:/testing.txt"
strText = "This is Test !" & vbCrLf & “hello word !”
'調(diào)用函數(shù)
Call CreateFile(strPath,strText)
Sub CreateFile(strPath,strText)
Dim objFso,objStream
'創(chuàng)建FileSystemObject對(duì)象
Set objFso = CreateObject("Scripting.FileSystemObject")
'使用FileSystemObject對(duì)象的CreateTextFile(),來(lái)返回一個(gè)TextStream對(duì)象句柄
Set objStream = objFso.CreateTextFile(strPath,True)
'三個(gè)Write的意思分別為:在文本中寫入字符、寫入帶換行符的字符、寫入3個(gè)換行符
objStream.Write(strText)
‘objStream.WriteLine(strText)
‘objStream. WriteBlankLines 3
'關(guān)閉TextStream對(duì)象
objStream.Close
End Sub
Read、ReadAll及ReadLine的使用
方法名:Read(numchars)
說(shuō)明:從 TextStream 文件中讀入指定數(shù)目的字符并返回結(jié)果字符串。
方法名:ReadAll()
說(shuō)明:讀入全部 TextStream 文件并返回結(jié)果字符串。
方法名:ReadLine()
說(shuō)明:從 TextStream 文件中讀入一整行字符(直到下一行,但不包括下一行字符),并返回結(jié)果字符串。
示例:
Sub CreateFile(strPath,strText)
Dim objFso,objStream
'創(chuàng)建FileSystemObject對(duì)象
Set objFso = CreateObject("Scripting.FileSystemObject")
'使用FileSystemObject對(duì)象的CreateTextFile(),來(lái)返回一個(gè)TextStream對(duì)象句柄
Set objStream = objFso.CreateTextFile(strPath,True)
'寫入字符
objStream.WriteLine(strText)
Set objStream = objFso.OpenTextFile(strPath,1,true)
msgbox (objStream.ReadLine)
'msgbox (objStream.ReadAll)
' msgbox (objStream.Read(Len(strText)))
'關(guān)閉TextStream對(duì)象
objStream.Close
End Sub
Skip、SkipLine的使用
方法名:Skip(numchars)
說(shuō)明:讀取 TextStream 文件時(shí)跳過(guò)指定數(shù)目的字符
方法名:SkipLine()
說(shuō)明:當(dāng)讀到 TextStream 文件時(shí),跳過(guò)下一行。
示例:
Dim strPath,strText
strPath = "C:/testing.txt"
'調(diào)用函數(shù)
Call CreateFile(strPath)
Sub CreateFile(strPath)
Dim objFso,objStream
'創(chuàng)建FileSystemObject對(duì)象
Set objFso = CreateObject("Scripting.FileSystemObject")
'使用FileSystemObject對(duì)象的CreateTextFile(),來(lái)返回一個(gè)TextStream對(duì)象句柄
Set objStream = objFso.CreateTextFile(strPath,True)
'在文本中寫入字符
objStream.Write "This is Test !" & vbCrLf & "hello word !"
'以只讀的方式打開(kāi)文件
Set objStream = objFso.OpenTextFile(strPath,1,true)
'讀取文件時(shí)跳過(guò)5個(gè)字符;或者跳過(guò)當(dāng)前行,讀取下一行
objStream.Skip(5)
'objStream.SkipLine
'讀取文本內(nèi)容
msgbox objStream.ReadAll
'關(guān)閉TextStream對(duì)象
objStream.Close
End Sub
備注:兩者的區(qū)別是:Skip——跳過(guò)指定的幾個(gè)字符;SkipLine——跳過(guò)一行
二、TextStream對(duì)象的屬性
TextStream 的屬性提供有關(guān)文件內(nèi)文件指針當(dāng)前位置的信息,如表9所示。注意,所有的屬性是只讀的。
|
表10 TextStream 對(duì)象的屬性及說(shuō)明 |
|
|
屬性 |
說(shuō)明 |
|
AtEndOfLine |
如果文件位置指針在文件中一行的末尾則返回 True |
|
AtEndOfStream |
如果文件位置指針在文件的末尾則返回 True |
|
Column |
從 1 開(kāi)始返回文件中當(dāng)前字符的列號(hào) |
|
Line |
從 1 開(kāi)始返回文件中當(dāng)前行的行號(hào)” |
AtEndOfLine 和 AtEndOfStream 屬性僅對(duì)以 iomode 參數(shù)為 ForReading 的方式打開(kāi)的文件可用,否則將會(huì)出錯(cuò)。
AtEndOfLine及AtEndOfStream的使用
示例:
Dim strPath,strText
strPath = "C:/testing.txt"
'調(diào)用函數(shù)
Call CreateFile(strPath)
Sub CreateFile(strPath)
Dim objFso,objStream,str
'創(chuàng)建FileSystemObject對(duì)象
Set objFso = CreateObject("Scripting.FileSystemObject")
'以只讀的方式打開(kāi)文件,如果文件不存在則創(chuàng)建它
Set objStream = objFso.OpenTextFile(strPath,1,true)
'如果當(dāng)前的指針不在行末,則讀取文本內(nèi)容
Do While objStream.AtEndOfLine <> true
‘Do While objStream.AtEndOfStream <> true
str = str + objStream.Read(1)
Loop
msgbox str
'關(guān)閉TextStream對(duì)象
objStream.Close
End Sub
備注:兩者間的區(qū)別是:AtEndOfLine——讀取到當(dāng)前文本行的末尾;AtEndOfStream——讀取到整個(gè)文本的末尾
Column及Line的使用
示例:
Sub TestTextStream(strPath)
Dim objFso,objTStream,str
Set objFso = CreateObject("Scripting.FileSystemObject")
'以只讀的方式打開(kāi)文件
Set objTStream = objFso.OpenTextFile(strPath,1)
'如果當(dāng)前的指針不在整個(gè)文檔的末尾,讀取文本的所有內(nèi)容
Do While objTStream.AtEndOfStream <> true
objTStream.ReadAll
str = str + "共有" & objTStream.Line & "行數(shù)據(jù),光標(biāo)最后所在列號(hào)為:" & objTStream.Column & vbCrLf
Loop
'打印信息
print str
End Sub
以下是補(bǔ)充資料:
FSO包含的常見(jiàn)對(duì)象有:
|
對(duì)象/集合 |
描述 |
|
Drive |
包含儲(chǔ)存設(shè)備的信息,包括硬盤、光驅(qū)、ram盤、網(wǎng)絡(luò)驅(qū)動(dòng)器 |
|
Drives |
提供一個(gè)物理和邏輯驅(qū)動(dòng)器的列表 |
|
File |
檢查和處理文件 |
|
Files |
提供包含在文件夾內(nèi)的所有文件的列表 |
|
Folder |
檢查和處理文件夾 |
|
Folders |
提供在 Folder 內(nèi)的所有文件夾的列表 |
|
TextStream |
對(duì)象。用來(lái)讀寫文本文件。 |
用FSO對(duì)象模型來(lái)編程,使用CreateObject方法來(lái)創(chuàng)建FileSystemObject對(duì)象,例如:
Dim fso
Set fso = wscript.createobject("scripting.filesystemobject")
在這個(gè)示例中,Scripting 是類型庫(kù)的名字,而 FileSystemObject 則是想要?jiǎng)?chuàng)建的對(duì)象的名字。至此我們獲取了fso對(duì)象,接下來(lái)就可以使用fso對(duì)象了。如果要釋放的話也很簡(jiǎn)單,例如:
Set fso = nothing
FileSystemObject對(duì)象總共一個(gè)屬性即Drives
描述:獲得所有可用驅(qū)動(dòng)器的集合。
說(shuō)明:無(wú)論是否本地磁盤、插入媒體、可移動(dòng)媒體驅(qū)動(dòng)器都顯示在 Drives 集合中。
具體示例代碼如下所示:獲取本計(jì)算機(jī)上所有的磁盤的盤符
Set fso = CreateObject("Scripting.FileSystemObject")
Set Drivers = fso.Drives
For Each Driver in Drivers
Msgbox Driver.DriveLetter '輸出計(jì)算機(jī)上所有的磁盤盤符
Next
方法:(僅常用的方法)
CreateFile
描述:創(chuàng)建一個(gè)空文件
語(yǔ)法:object. CreateTextFile(strFile,blnOverWrite)
參數(shù):strFile為文件名稱
blnOverWrite為Ture強(qiáng)制覆蓋,為False不覆蓋
示例:創(chuàng)建文件C:\test.txt
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用CreateTextFile創(chuàng)建文件,不覆蓋存在的文件
Fso.CreateTextFile "C:\test.txt",False
'覆蓋存在的文件
Fso.CreateTextFile "C:\test.txt",True
CreateFolder
描述:創(chuàng)建一個(gè)空的文件夾
語(yǔ)法:object. CreateFolder(strFolder)
參數(shù):strFolder為想要?jiǎng)?chuàng)建的文件夾名稱
示例:創(chuàng)建文件夾: c:\test
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用MyFolder創(chuàng)建文件夾
Fso.CreateFolder("c:\test")
DeleteFile
描述:刪除一個(gè)文件
語(yǔ)法:object. DeleteFile (strFile,force)
參數(shù):strFile為想要?jiǎng)h除的文件。組成部分中可用通配符。
force如果要?jiǎng)h除只讀文件,則該值為 True;否則為 False(默認(rèn))
示例:刪除文件: c:\test.txt
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用DeleteFile刪除指定文件
Fso.DeleteFile("c:\test.txt")
'強(qiáng)制刪除只讀的文件
Fso.DeleteFile "c:\test.txt",True
DeleteFolder
描述:刪除一個(gè)文件夾
語(yǔ)法:object. DeleteFolder(strFolder,force)
參數(shù):strFolder為想要?jiǎng)h除的文件夾名稱。組成部分中可用通配符。
force如果要?jiǎng)h除只讀文件夾,則該值為 True;否則為 False(默認(rèn))
示例:刪除文件夾: c:\test
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用DeleteFile刪除指定文件
Fso.DeleteFolder("c:\test")
'強(qiáng)制刪除只讀的文件
Fso.DeleteFolder "c:\test",True
FileExists
描述:判斷指定文件是否存在
語(yǔ)法:object. FileExists (strFile)
參數(shù):strFile為指定的文件
示例:檢查文件: c:\test.txt是否存在
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用FileExists判斷指定文件是否存在
MsgBox Fso.FileExists("c:\test.txt")
FolderExist
描述:判斷指定文件夾是否存在
語(yǔ)法:object. FolderExists (strFolder)
參數(shù):strFolder為指定的文件夾
示例:檢查文件夾: c:\test是否存在
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用FolderExists判斷指定文件夾是否存在
MsgBox Fso.FolderExists("c:\test")
CopyFile
描述:將一個(gè)或多個(gè)文件從某位置復(fù)制到另一位置
語(yǔ)法:object.CopyFile "source", "destination"[, overwrite]
參數(shù):source必選項(xiàng)。表示指定文件的路徑。組成部分中可用通配符。
destination必選項(xiàng)。表示目標(biāo)位置路徑
overwrite可選項(xiàng)。Boolean 值表明是否覆蓋現(xiàn)有文件。如果是 True,則覆蓋文件;如果是 False,則不覆蓋現(xiàn)有文件。默認(rèn)值是 True
示例:將 c:\test.txt文件復(fù)制到D:\下
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用CopyFile復(fù)制文件到另一個(gè)位置,False不覆蓋已存在文件
Fso.CopyFile "c:\test.txt","D:\",False
'True覆蓋已存在文件
Fso.CopyFile "c:\test.txt","D:\",True
示例:將 c:\下所有的txt文件復(fù)制到D:\下
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用*.txt,可以同時(shí)將多個(gè)文件復(fù)制到另一個(gè)位置,False不覆蓋已存在文件
Fso.CopyFile "c:\*.txt","D:\",False
'True表示覆蓋已存在文件
Fso.CopyFile "c:\*.txt","D:\",True
CopyFolder
描述:將文件夾從某位置復(fù)制到另一位置
語(yǔ)法:object. CopyFolder "source", "destination"[, overwrite]
參數(shù):source必選項(xiàng)。表示指定文件夾的路徑。組成部分中可用通配符。
destination必選項(xiàng)。表示目標(biāo)位置的路徑
overwrite可選項(xiàng)。Boolean 值表明是否覆蓋現(xiàn)有文件夾。
如果是 True,則覆蓋文件夾;如果是 False,則不覆蓋現(xiàn)有文件夾。默認(rèn)值是 True
示例:將 c:\test文件夾復(fù)制到D:\下
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用CopyFile復(fù)制文件到另一個(gè)位置,默認(rèn)為True覆蓋已存在文件
Fso.CopyFolder "c:\test","D:\"
'False不覆蓋已存在文件
Fso.CopyFolder "c:\test","D:\",False
MoveFile
描述:將一個(gè)或多個(gè)文件從某位置移動(dòng)到另一位置
語(yǔ)法:object.MoveFile source, destination
參數(shù):source必選項(xiàng)。要移動(dòng)的文件的路徑。組成部分中可用通配符。
destination必選項(xiàng)。指定路徑,表示要將文件移動(dòng)到該目標(biāo)位置。
destination 參數(shù)不能包含通配符。
示例:將 c:\test文件夾移動(dòng)到D:\下
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用MoveFile移動(dòng)文件到另一個(gè)位置
Fso.MoveFile "c:\test.txt","D:\"
MoveFolder
描述:將一個(gè)或多個(gè)文件夾從某位置移動(dòng)到另一位置
語(yǔ)法:object.MoveFolder source, destination
參數(shù):source必選項(xiàng)。要移動(dòng)的文件夾的路徑。組成部分中可用通配符。
destination必選項(xiàng)。指定路徑,表示要將文件夾移動(dòng)到該目標(biāo)位置。
示例:
Dim Fso
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用MoveFolder移動(dòng)文件夾到另一個(gè)位置
Fso.MoveFolder "c:\test","D:\"
GetExtensionName
描述:獲取文件后綴名
語(yǔ)法:object.MoveFolder source, destination
參數(shù):source必選項(xiàng)。要移動(dòng)的文件夾的路徑。組成部分中可用通配符。
destination必選項(xiàng)。指定路徑,表示要將文件夾移動(dòng)到該目標(biāo)位置。
示例:獲取”c:\test.txt”文件后綴名
Dim Fso
Dim GetExtensionName
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用GetExtensionName獲取文件后綴名
GetExtensionName = fso.GetExtensionName("c:\test.txt")
MsgBox GetExtensionName '輸出txt
GetBaseName
描述:獲取文件當(dāng)前所在文件夾
語(yǔ)法:object.GetBaseName Path
參數(shù):Path必選項(xiàng)。文件路徑名。
示例:獲取”c:\test.txt”文件名稱
Dim Fso
Dim GetBaseName
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用GetBaseName獲取文件的文件名稱
GetBaseName = Fso.GetBaseName("c:\test\test.txt")
MsgBox GetBaseName '輸出test
GetParentFolderName
描述:將一個(gè)或多個(gè)文件夾從某位置移動(dòng)到另一位置
語(yǔ)法:object.GetParentFolderName Path
參數(shù):Path必選項(xiàng)。文件路徑名。
示例:獲取”c:\test.txt”文件所在的文件夾
Dim Fso
Dim GetParentFolderName
'創(chuàng)建FileSystemObject對(duì)象
Set Fso = CreateObject("Scripting.FileSystemObject")
'使用GetParentFolderName獲取文件當(dāng)前所在的文件夾
GetParentFolderName = Fso.GetParentFolderName("c:\test\test.txt")
MsgBox GetParentFolderName '輸出c:\test
好了這篇文章就介紹到這了,看完這篇文章基本上對(duì)FileSystemObject就比較了解了。
相關(guān)文章
用vbs實(shí)現(xiàn)的瞬間關(guān)閉多個(gè)系統(tǒng)進(jìn)程的腳本
程序利用 vbs 的wmi 、scripting.filesystemobject、shell.application、scripting.dictionary、wscript.shell的相關(guān)功能功能實(shí)現(xiàn)將當(dāng)前進(jìn)程列表顯示在一個(gè)文本文件中,通過(guò)用戶界面的選擇,確定需要瞬間中斷的進(jìn)程列表,然后中斷之。2008-06-06
VBS教程:VBscript語(yǔ)句-Private 語(yǔ)句
VBS教程:VBscript語(yǔ)句-Private 語(yǔ)句...2006-11-11
VBS教程:函數(shù)-LTrim、RTrim 和 Trim 函數(shù)
VBS教程:函數(shù)-LTrim、RTrim 和 Trim 函數(shù)...2006-11-11

