版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
◎感謝錢峰2007年05月13日星期日下午04:26學(xué)習(xí)Vbs,當(dāng)然是看微軟網(wǎng)站上推出的官方教程比較原汁原味,可惜中國(guó)vbs學(xué)友里看過(guò)的恐怕不多,原因很簡(jiǎn)單,微軟的官方原著是英文版的,看起來(lái)很費(fèi)力。當(dāng)時(shí),我剛剛發(fā)現(xiàn)vbs的妙處,可是除了一本微軟的《MicrosoftWindows腳本技術(shù).CHM》之外,什么學(xué)習(xí)資料也找不到,看到網(wǎng)上介紹有一本W(wǎng)indows2000腳本編程實(shí)用大全》的書(shū),就跑到各個(gè)書(shū)店去訂書(shū),因?yàn)槌霭娴臅r(shí)間太久了,那里都訂不到,又跑到各個(gè)技術(shù)網(wǎng)站上去發(fā)帖,希望那位有電子版給我發(fā)一份,我愿意用其他方面的技術(shù)資料交換,結(jié)果如同石沉大海,一點(diǎn)消息也沒(méi)有,在這里小小鄙視他們一下。后來(lái)偶然在網(wǎng)絡(luò)上遇到錢峰先生,慷慨贈(zèng)送了他翻譯的微軟的官方教程給我,讓我邁進(jìn)了vbs的大門,真是慚愧,由于計(jì)算機(jī)感染病毒,錢峰先生的郵件地址我也找不到了,只有他的一個(gè)qq號(hào)碼,卻從來(lái)不見(jiàn)他上線,多次留言,也沒(méi)有見(jiàn)到他回應(yīng),在此對(duì)錢峰先生的翻譯工作及無(wú)償贈(zèng)予表示衷心的感謝!今后一段時(shí)間,我將逐步將錢峰先生翻譯的微軟官方教程貼出,與大家共同溫習(xí)。有英文好的朋友可能會(huì)發(fā)覺(jué)這份翻印的教程與微軟官方原版并不是完全相同,一是因?yàn)殄X峰先生翻譯的時(shí)候大約并沒(méi)有想到要出版或者與人交流,僅僅是自己學(xué)習(xí),所以翻譯的比較粗糙,我剛剛得到的時(shí)候,很多地方都看的不是很懂,在與微軟英文官方教程比較后,按照自己的理解修改了其中的一部分(對(duì)其中的有些地方,其實(shí)到現(xiàn)在我也還是弄不明白);二是因?yàn)橥鈬?guó)人行文和思維的方式與中國(guó)人有著很大的差別,讀起來(lái)頗為費(fèi)力,所以我對(duì)其中一些表達(dá)方式進(jìn)行了修改,刪除了其中一些我認(rèn)為無(wú)關(guān)緊要的東西。各位學(xué)友如發(fā)現(xiàn)其中的錯(cuò)誤請(qǐng)不吝指出,我會(huì)盡快修改,語(yǔ)意不祥的地方請(qǐng)參考官方網(wǎng)站:/technet/scriptcenter/guide/default.mspx◎VBS腳本運(yùn)行庫(kù)手冊(cè)之一(磁盤(pán)操作)2007年05月13日星期日下午04:36文件系統(tǒng)管理是系統(tǒng)管理的一個(gè)關(guān)鍵性任務(wù)。WSH和VB腳本在這個(gè)領(lǐng)域都沒(méi)有提供相關(guān)的功能。幸運(yùn)的是,你可以通過(guò)scriptruntime庫(kù)來(lái)管理這些關(guān)鍵的系統(tǒng)組件,比如磁盤(pán),文件夾和文件。此外,scriptruntime庫(kù)提供了從text文件讀寫(xiě)的方法,可以用來(lái)創(chuàng)建dictionary和編譯腳本。[作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]兩種主要的腳本語(yǔ)言,VB腳本語(yǔ)言和JS腳本語(yǔ)言起初的時(shí)候都是設(shè)計(jì)給客戶端來(lái)編寫(xiě)IE的。正是因?yàn)槿绱耍@兩個(gè)腳本語(yǔ)言都有一些局限性。例如VB腳本和JS腳本內(nèi)部都沒(méi)有提供訪問(wèn)文件管理的一些任務(wù),比如:復(fù)制、移動(dòng)、刪除文件等。這樣做的目的是為了保護(hù)消費(fèi)者。大多數(shù)的的網(wǎng)站不可能讓用戶通過(guò)網(wǎng)頁(yè)去刪除它們硬盤(pán)上的東西。盡管如此,腳本已經(jīng)從類似的HTML的按鈕之類的開(kāi)始迅速的發(fā)展了。隨著ASP的到來(lái),瀏覽器的編寫(xiě)者要求在server上管理文件。而隨著WSH的到來(lái),系統(tǒng)管理員要求有在web瀏覽器外來(lái)管理文件了。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]為了滿足這個(gè)要求,微軟發(fā)布的了ScriptRuntimeLibrary。它是一個(gè)單獨(dú)的DLL文件,scrrun.dll文件,用來(lái)給腳本的編寫(xiě)者們提供一些文件管理的能力,包括以下內(nèi)容:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]1、獲取文件系統(tǒng)的信息,包括獲得磁盤(pán)、文件和文件夾上的信息。2、復(fù)制,移動(dòng)和刪除文件及文件夾3、創(chuàng)建和讀寫(xiě)文本文件。除了這些功能之外,ScriptRuntimeLibrary提供了創(chuàng)建字典的能力。也可以用來(lái)對(duì)腳本進(jìn)行編譯,使腳本成為加密的。Note:這章只是討論FileSystemObject和Dictionary的部分,對(duì)于Encode部分不作討論,ScriptRuntimeLibrary也是windows2000的一部分,它在你安裝或者升級(jí)微軟的應(yīng)用程序的時(shí)候也隨著升級(jí)和安裝了:這些應(yīng)用程序有以下幾個(gè):1、WSH 2、VB腳本3、IE瀏覽器4、MicrosoftOffice 5、FileSystemObject正如它的名字一樣,F(xiàn)SO設(shè)計(jì)用來(lái)幫助你管理文件系統(tǒng),F(xiàn)SO允許你獲取重要的文件組件信息,包括硬盤(pán)、文件夾、文件;也提供一般的系統(tǒng)管理的任務(wù),比如復(fù)制、刪除、移動(dòng)文件和文件夾。此外FSO允許你讀寫(xiě)文本文件。用FSO其實(shí)有些用詞不當(dāng),因?yàn)閷?shí)際上FSO包含很多個(gè)對(duì)象,每個(gè)對(duì)象被設(shè)計(jì)成用來(lái)完成特定的目的。組成FSO的對(duì)象列在了下表中:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Drive 代表系統(tǒng)中磁盤(pán)或者磁盤(pán)的集合File 代表系統(tǒng)中的一個(gè)文件或者文件的集合Folder 代表文件系統(tǒng)中的一個(gè)文件夾或者多個(gè)文件夾TextStream代表文本文件中的讀取、寫(xiě)入或者提交字符串※磁盤(pán)管理磁盤(pán)管理是系統(tǒng)管理的一個(gè)重要的部分。作為一個(gè)系統(tǒng)管理員,知道安裝在這個(gè)計(jì)算機(jī)上磁盤(pán)是十分重要的,當(dāng)然,知道這個(gè)磁盤(pán)的屬性、磁盤(pán)類型、子盤(pán)大小、總共和剩余空間也是同等重要的。作為一個(gè)腳本的編寫(xiě)者,你有兩個(gè)主要的選擇來(lái)管理磁盤(pán):WMI&FSO。一般來(lái)講,WMI更是管理磁盤(pán)的首選項(xiàng),主要有以下幾個(gè)原因:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]1、WMI能返回一些FSO無(wú)法返回的屬性,比如磁道、扇面等。2、FSO不能返回一個(gè)目標(biāo)磁盤(pán)。而是返回所有的磁盤(pán),然后進(jìn)行篩選出你感興趣的磁盤(pán)。而你可以用WMI通過(guò)磁盤(pán)符號(hào)來(lái)返回特定的磁盤(pán),WMI可以用來(lái)返回遠(yuǎn)程計(jì)算機(jī)上磁盤(pán)的信息,但是FSO不可以,除非它用wshcontroller對(duì)象。雖然WMI或許是獲得磁盤(pán)信息的最好工具。但是這里至少有兩個(gè)原因使你必須去熟悉FSO。第一:因?yàn)橛行┑投说牟僮飨到y(tǒng)無(wú)法安裝WMI,所以只能使用FSO;作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]第二:最重要的一點(diǎn)是因?yàn)椋耗_本的編寫(xiě)者們?cè)谙氲将@取磁盤(pán)信息的時(shí)候就會(huì)用到FSO,而你作為系統(tǒng)管理員,可能會(huì)來(lái)看其它人的腳本,這樣就需要了解FSO。注:外國(guó)人寫(xiě)的真是拗口,我理解這句話的意思就是說(shuō)FSO比WMI應(yīng)用的更廣泛一些?!?如何返回磁盤(pán)信息在你管理計(jì)算機(jī)的磁盤(pán)之前,你需要知道你的計(jì)算機(jī)上實(shí)際上有多少磁盤(pán)可以使用oFSO允許你管理安裝在計(jì)算機(jī)上的所有磁盤(pán),包括移動(dòng)硬盤(pán)和網(wǎng)絡(luò)硬盤(pán)(就是只要是有盤(pán)符的就可以了)為了返回這個(gè)集合,你需要首先創(chuàng)建一個(gè)FSO實(shí)例,然后創(chuàng)建磁盤(pán)屬性的對(duì)象。當(dāng)這個(gè)集合返回后,你可用一個(gè)ForEach的循環(huán)來(lái)重述這個(gè)集合。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]例如,下面的腳本就是要返回安裝在本地計(jì)算機(jī)上的磁盤(pán)集合然后返回它們的盤(pán)符:SetobjFSO=CreateObject("Scripting.FileSystemObject")SetcolDrives=objFSO.DrivesForEachobjDriveincolDrivesWscript.Echo"Driveletter:"&objDrive.DriveLetterNext◎VBS腳本運(yùn)行庫(kù)手冊(cè)之二(磁盤(pán)操作)2007年05月13日星期日下午04:38※如何綁定指定磁盤(pán)如果你事先知道要綁定的磁盤(pán)(例如C盤(pán)或一個(gè)共享文件夾\\accounting\receivables),你可以用GetDrive的方法來(lái)直接綁定磁盤(pán)。這樣你可以不用去篩選就獲得特定磁盤(pán)的信息。GetDrive需要一個(gè)單獨(dú)的參數(shù):磁盤(pán)符號(hào)或者是共享文件夾的UNC路徑。你可以用如下的幾種格式:CC: C:\作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]在下面的腳本中首先創(chuàng)建一個(gè)FSO對(duì)象,然后用GetDrive的方法來(lái)直接綁定C盤(pán),然后回顯可用的磁盤(pán)空間:SetobjDrive=objFSO.GetDrive("C:")Wscript.Echo"Availablespace:"&objDrive.AvailableSpace注意,這里沒(méi)有ForEach循環(huán),你就可以獲得磁盤(pán)的屬性。因?yàn)槟_本是返回一個(gè)單獨(dú)的磁盤(pán)對(duì)象,而不是所有對(duì)象的集合。因此也就不用篩選了。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]※如何列舉磁盤(pán)驅(qū)動(dòng)器的屬性磁盤(pán)集合的作用總是用來(lái)監(jiān)視和列舉的。作為一個(gè)系統(tǒng)管理員,你需要知道計(jì)算機(jī)上的可用磁盤(pán),也需要知道磁盤(pán)的序列號(hào)、可用空間等信息。在你獲得當(dāng)前磁盤(pán)的集合或者單個(gè)磁盤(pán)的時(shí)候,你就可以獲得下表列出的所有屬性。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]1、AvailableSpac 報(bào)告磁盤(pán)上可以使用的空間,單位是bytes。如果想以kb為單位返回,除以1024,如果想以M為單位返回,則除以1.048,576。這個(gè)屬性返回的是可用的磁盤(pán)空間的總數(shù)。如果一個(gè)磁盤(pán)啟用了磁盤(pán)限額,那么他返回的數(shù)字可能比實(shí)際的要小。2、DriveLette 返回特定磁盤(pán)的盤(pán)符。這個(gè)盤(pán)符不包含那么冒號(hào)。例如軟盤(pán)返回的是A,而不是A:3、 DriveType——整數(shù)的值代表不同的磁盤(pán)類型:1:移動(dòng)硬盤(pán)2:硬盤(pán)3:網(wǎng)絡(luò)硬盤(pán)作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]4:CD-ROM5:RAM磁盤(pán)4、FreeSpace返回磁盤(pán)剩余空間的總額。單位是bytes,如果是返回的單位是kb,就除以1024,如果是以M為單位,除以1,048,576。注意:這個(gè)和磁盤(pán)可用空間不一樣,剩余的磁盤(pán)空間不會(huì)考慮磁盤(pán)限額。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]5、 FileSystem——返回文件系統(tǒng)的類型(FAT,FAT32,NTFS)6、 IsReady——標(biāo)識(shí)磁盤(pán)是否可以訪問(wèn)。這個(gè)值來(lái)判斷軟盤(pán)和CD-ROM是否為空7、 Path——磁盤(pán)路徑。對(duì)于本地磁盤(pán),返回盤(pán)符和脫尾符(就是那個(gè)冒號(hào))比如A:對(duì)于網(wǎng)絡(luò)磁盤(pán),就返回它的UNC路徑。8、RootFolde 返回磁盤(pán)根目錄下的文件夾。9、SerialNumber 磁盤(pán)的生產(chǎn)商給磁盤(pán)分配的序列號(hào)。對(duì)于軟盤(pán)和網(wǎng)絡(luò)硬盤(pán)來(lái)說(shuō),它們的值是0。10、 ShareName——分配給網(wǎng)絡(luò)驅(qū)動(dòng)去的共享名稱。11、TotalSiz報(bào)告整個(gè)的磁盤(pán)空間,單位是bytes,如果想以kb為單位,除以1024,如果想以M為單位返回,則單位為1,048,576。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]12、VolumeName 分配給磁盤(pán)的卷名。為了列舉安裝在計(jì)算機(jī)里的磁盤(pán)的屬性,創(chuàng)建一個(gè)FSO實(shí)例,然后創(chuàng)建一個(gè)FSO屬性的對(duì)象,用ForEach循環(huán),來(lái)重現(xiàn)各個(gè)磁盤(pán)的配置。對(duì)于集合當(dāng)中的每個(gè)磁盤(pán),你可以返回一個(gè)或者的屬性。如下列腳本列舉出安裝在計(jì)算機(jī)上所有磁盤(pán)的所有屬性。SetobjFSO=CreateObject("Scripting.FileSystemObject")2SetcolDrives=objFSO.Drives3ForEachobjDriveincolDrives4Wscript.Echo"Availablespace:"&objDrive.AvailableSpace5Wscript.Echo"Driveletter:"&objDrive.DriveLetter6Wscript.Echo"Drivetype:"&objDrive.DriveType7Wscript.Echo"Filesystem:"&objDrive.FileSystem8Wscript.Echo"Isready:"&objDrive.IsReady9Wscript.Echo"Path:"&objDrive.Path10Wscript.Echo"Rootfolder:"&objDrive.RootFolder11Wscript.Echo"Serialnumber:"&objDrive.SerialNumber12Wscript.Echo"Sharename:"&objDrive.ShareName13Wscript.Echo"Totalsize:"&objDrive.TotalSize14Wscript.Echo"Volumename:"&objDrive.VolumeName15Next作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]上述腳本有個(gè)潛在的缺點(diǎn),就是如果沒(méi)有軟盤(pán)或者光驅(qū)里面沒(méi)有光盤(pán),會(huì)產(chǎn)生一個(gè)disknotready的錯(cuò)誤出來(lái)。當(dāng)磁盤(pán)沒(méi)有準(zhǔn)備好的時(shí)候用FSO來(lái)訪問(wèn)會(huì)有些錯(cuò)誤的。雖然FSO可以標(biāo)識(shí)那些沒(méi)有準(zhǔn)備好的磁盤(pán),但是你訪問(wèn)它的一些屬性的時(shí)候會(huì)報(bào)錯(cuò)出來(lái),比如AvailableSpace或FreeSpace。如果磁盤(pán)沒(méi)有準(zhǔn)備好,你只可以訪問(wèn)如下的四個(gè)屬性:DriveLetter、DriveType、IsReady、ShareName。所有嘗試訪問(wèn)其它屬性都會(huì)報(bào)錯(cuò)。幸運(yùn)的是,IsReady屬性允許你用腳本來(lái)檢查一個(gè)磁盤(pán)是否準(zhǔn)備好了。IsReady返回一個(gè)Boolean值,如果這個(gè)值是true,則磁盤(pán)準(zhǔn)好了,你可以訪問(wèn)它的所有屬性,否則如果這個(gè)值是false,則磁盤(pán)沒(méi)有準(zhǔn)備好,只能返回上面的四個(gè)屬性了??梢詫?duì)每個(gè)磁盤(pán),用IsReady屬性來(lái)保證磁盤(pán)是準(zhǔn)備好的。如果是就返回磁盤(pán)的盤(pán)符和剩余空間,如果不是就只返回磁盤(pán)的盤(pán)符。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]SetobjFSO=CreateObject("Scripting.FileSystemObject")SetcolDrives=objFSO.DrivesForEachobjDriveincolDrivesIfobjDrive.IsReady=TrueThenWscript.Echo"Driveletter:"&objDrive.DriveLetterWscript.Echo"Freespace:"&objDrive.FreeSpaceElseWscript.Echo"Driveletter:"&objDrive.DriveLetterEndIfNext作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Note:這個(gè)問(wèn)題不會(huì)發(fā)生在WMI上(如果軟盤(pán)或者光驅(qū)中沒(méi)有盤(pán),腳本就會(huì)失敗),WMI只是認(rèn)為返回的空間為Null◎VBS腳本運(yùn)行庫(kù)手冊(cè)之三(管理文件夾)2007年05月13日星期日下午04:40※管理文件夾磁盤(pán)的屬性比如磁盤(pán)的剩余空間,磁盤(pán)的總額提供了一個(gè)全局的信息給系統(tǒng)管理員。但是,對(duì)于系統(tǒng)管理而言,磁盤(pán)的信息雖然是必須的,但是還不夠。知道文件存儲(chǔ)在哪個(gè)盤(pán)固然重要,但是你也需要知道文件是存儲(chǔ)在哪個(gè)文件夾下的。此外許多的系統(tǒng)管理任務(wù)都是發(fā)生在文件夾級(jí)別的,比如復(fù)制,移動(dòng),刪除和列舉文件夾的內(nèi)容。FSO可以返回一個(gè)磁盤(pán)上文件夾的全部信息。此外,F(xiàn)SO提供了一系列的方法來(lái)完成諸如:復(fù)制、移動(dòng)、刪除文件夾的操作?!绾谓壎ㄖ付ǖ奈募A在微軟的調(diào)用文件中,文件夾是COM對(duì)象。這就是說(shuō)在你訪問(wèn)一個(gè)單獨(dú)的文件夾的屬性時(shí),你必須去創(chuàng)建一個(gè)文件夾的對(duì)象reference,這個(gè)過(guò)程叫做綁定。你可以用FSO和GetObject的方法來(lái)綁定到一個(gè)文件夾。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]當(dāng)用GetFolder的時(shí)候,你必須:路徑既可以寫(xiě)成本地路徑也可以寫(xiě)成UNC路徑(例如:\\accounting\receivables)。但是通配符不能出現(xiàn)在路徑當(dāng)中。此外,你不可以創(chuàng)建一個(gè)單獨(dú)的對(duì)象reference來(lái)同時(shí)綁定到多個(gè)文件夾。例如,如下的腳本代碼會(huì)產(chǎn)生一個(gè)錯(cuò)誤:objFSO.GetFolder("C:\FSO","C:\Scripts")如果你想針對(duì)多個(gè)文件夾同時(shí)工作,你要么用WMI或者用針對(duì)每個(gè)文件夾創(chuàng)建單獨(dú)的對(duì)象reference。在設(shè)置的時(shí)候Set這個(gè)關(guān)鍵詞是必須的,因?yàn)槟阋獦?biāo)識(shí)這個(gè)對(duì)象reference變量。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]例如下面的腳本綁定文件夾C:\FSOSetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")雖然通配符是不允許的,但是你可以用點(diǎn)來(lái)關(guān)聯(lián)到當(dāng)前的文件夾(.),你可以用點(diǎn)點(diǎn)(..)來(lái)綁定到父文件夾,用\綁定到根文件夾。例如如下代碼語(yǔ)句綁定到當(dāng)前的文件夾:SetobjFolder=objFSO.GetFolder(".")※檢驗(yàn)文件夾是否存在作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]許多的文件夾的操作包括復(fù)制、移動(dòng)、刪除需要特定的文件夾存在才可以對(duì)其進(jìn)行操作。畢竟,腳本不能復(fù)制、移動(dòng)、刪除這些不存在的文件夾,如果一個(gè)腳本嘗試去對(duì)一個(gè)不存在的文件夾執(zhí)行類似的操作,那么會(huì)報(bào)錯(cuò)“pathnotfound”。為了避免這樣的問(wèn)題發(fā)生,你可以用FolderExists方法來(lái)在你綁定一個(gè)文件夾之前檢查文件夾是否存在。FolderExists用一個(gè)簡(jiǎn)單的參數(shù)(文件夾路徑)來(lái)返回一個(gè)Boolean值,如果文件夾存在,返回的值為True,否則返回的值為False。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]例如,下例中列出的腳本,F(xiàn)olderExists方法來(lái)檢查文件夾C:\FSO是否存在。如果存在,腳本用GetFolder方法來(lái)綁定文件夾。如果不存在,腳本就彈出一個(gè)messagebox說(shuō):Folderdoesnotexist.SetobjFSO=CreateObject("Scripting.FileSystemObject")IfobjFSO.FolderExists("C:\FSO")ThenSetobjFolder=objFSO.GetFolder("C:\FSO")Wscript.Echo"Folderbindingcomplete.Else作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Wscript.Echo"Folderdoesnotexist?7EndIf※如何建立文件夾你不可能永遠(yuǎn)都使用你現(xiàn)有的文件系統(tǒng)結(jié)構(gòu),從來(lái)不去更改你的文件系統(tǒng)結(jié)構(gòu)。而事實(shí)上,文件系統(tǒng)是動(dòng)態(tài)的,因?yàn)樾枰儎?dòng),現(xiàn)存的文件夾可能被刪除,新的文件夾可能被創(chuàng)建。例如,你的單位在fileservers上給用戶提供空間,你需要在每個(gè)新用戶來(lái)的時(shí)候創(chuàng)建一個(gè)新的文件夾給他。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]FSO給腳本編寫(xiě)者提供了這樣的能力,可以讓你通過(guò)腳本來(lái)創(chuàng)建文件夾。例如在上例中腳本檢查特定的文件夾是否存在,如果存在,腳本用GetFolder的的方法來(lái)綁定到這個(gè)特定的文件夾,如果不存在,腳本彈出一個(gè)消息框。雖然這個(gè)方法避免了腳本的失敗,但是你或許更希望在文件夾不存在的時(shí)候來(lái)創(chuàng)建一個(gè)文件夾,而不是簡(jiǎn)單的報(bào)告說(shuō)文件夾不存在。為了做到這點(diǎn),首先創(chuàng)建一個(gè)FSO對(duì)象實(shí)例,然后用CreateFolder方法,將文件夾的完成路徑作為參數(shù),例如,下面腳本用這個(gè)方法來(lái)創(chuàng)建一個(gè)新的文件夾C:\FSO1 SetobjFSO=CreateObject("Scripting.FileSystemObject")2SetobjFolder=objFSO.CreateFolder("C:\FSO")如果文件夾存在,那么會(huì)報(bào)錯(cuò)說(shuō)”fileexists”?;诖耍阈枰趧?chuàng)建文件夾的之前檢查文件對(duì)象是否存在。Note:FSO只能在本地創(chuàng)建文件夾。如果你想在遠(yuǎn)程的計(jì)算機(jī)上創(chuàng)建文件夾,你需要用到wshcontroller對(duì)象。你可以在本地創(chuàng)建文件夾然后用WMI來(lái)將文件夾移動(dòng)到遠(yuǎn)程的計(jì)算機(jī)上。(這個(gè)文件夾只能先創(chuàng)建再用WMI移動(dòng),因?yàn)閃MI不支持創(chuàng)建文件夾的方法。)作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]※ 刪除文件夾作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]當(dāng)你要?jiǎng)h除文件夾時(shí),例如你用文件服務(wù)器存儲(chǔ)每一個(gè)員工的數(shù)據(jù),當(dāng)這個(gè)員工離開(kāi)單位時(shí),他的文件夾將被刪除。這保證了文件服務(wù)器上的磁盤(pán)空間,同樣,你或許用一個(gè)腳本來(lái)創(chuàng)建一個(gè)文件夾來(lái)存儲(chǔ)臨時(shí)文件,當(dāng)腳本執(zhí)行完畢的時(shí)候,你會(huì)刪除這個(gè)臨時(shí)的文件。DeleteFolder方法使你可以刪除文件夾和文件夾下的所有文件。DeleteFolder需要一個(gè)單獨(dú)的參數(shù):文件夾的完全路徑。例如下面腳本用來(lái)刪除C:\FSO和其它所有的東西。SetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.DeleteFolder("C:\FSO")這個(gè)方法會(huì)立即刪除所有的文件,它不會(huì)讓你確認(rèn)是否需要?jiǎng)h除就將其扔到垃圾筒。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]※使用通配符(Wildcards)刪除文件夾腳本的最大的一個(gè)優(yōu)點(diǎn)就是作為一個(gè)管理工具,腳本操作可以同時(shí)刪除許多個(gè)項(xiàng)目。例如你可以用腳本的一個(gè)單獨(dú)的操作就可以刪除所有的文件和文件夾,而不用一個(gè)一個(gè)去刪除了。FSO允許你用通配符來(lái)刪除一些特定的文件。例如你希望刪除某文件夾下所有以s開(kāi)頭的文件夾,這可以用下面的命令來(lái)完成。當(dāng)用類似這樣的文件夾結(jié)構(gòu)來(lái)運(yùn)行這個(gè)的時(shí)候,那么文件夾subfolder1,subfolder2,scripts都會(huì)被刪除。objFSO.DeleteFolder("C:\FSO\S*")下面這個(gè)腳本用來(lái)刪除以su開(kāi)頭的文件夾,就是說(shuō)subfolder1,subfolder2會(huì)被刪除。objFSO.DeleteFolder("C:\FSO\Su*")通配符只能放在文件路徑的最末尾。例如如下代碼將通配符放在路徑的中間,會(huì)報(bào)錯(cuò):pathnotfoundobjFSO.DeleteFolder("C:\*\Subfolder1")◎VBS腳本運(yùn)行庫(kù)手冊(cè)之四(管理文件夾)2007年05月13日星期日下午04:41※復(fù)制文件夾及文件夾下的內(nèi)容作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]復(fù)制文件夾和文件夾當(dāng)中所有數(shù)據(jù)能力的對(duì)于系統(tǒng)管理任務(wù)來(lái)說(shuō)非常重要。有時(shí)你需要復(fù)制文件夾來(lái)創(chuàng)建備份,在計(jì)算機(jī)A和計(jì)算機(jī)B上有同樣的文件夾,如果計(jì)算機(jī)B意外的down掉之后,你就不怕數(shù)據(jù)丟失了。在其它的時(shí)候,你或許希望將含有特定文件的文件夾復(fù)制到很多臺(tái)計(jì)算機(jī)上。用腳本來(lái)向各個(gè)計(jì)算機(jī)復(fù)制這個(gè)文件夾比手工復(fù)制高效的多。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]1、CopyFolder方法允許你復(fù)制一個(gè)文件夾到另外一個(gè)地方。當(dāng)不用通配符的時(shí)候,這個(gè)CopyFolder的方法和命令Xcopy/E命令一樣:它拷貝所有的文件和子文件夾,包括空的文件夾。這個(gè)命令需要兩個(gè)參數(shù):源文件夾->這個(gè)文件夾可以被確定為本地路徑(C:\Script)或者為UNC路徑(\\helpdesk\scripts)。目標(biāo)文件夾->這個(gè)文件夾也可以是本地文件夾和UNC路徑。如果目標(biāo)文件夾不存在,那么將自動(dòng)創(chuàng)建一個(gè)文件夾。此外這個(gè)方法有個(gè)可選的參數(shù):Overwrite,當(dāng)這個(gè)參數(shù)存在時(shí),默認(rèn)的情況下腳本會(huì)覆蓋已經(jīng)存在的目標(biāo)文件夾。Note:CopyFolder方法會(huì)在遇到錯(cuò)誤時(shí)停止,即使這個(gè)腳本中包含有OnErrorResumeNext語(yǔ)句。例如你用腳本用來(lái)拷貝100的子文件夾,當(dāng)成功拷貝三個(gè)之后,遇到一個(gè)錯(cuò)誤。這時(shí)腳本會(huì)中止,它不去嘗試剩下的97的文件夾。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]在下例中用CopyFolder的方法來(lái)復(fù)制文件夾C:\scripts到c:\FSO并且復(fù)寫(xiě)目標(biāo)文件夾。注意,這個(gè)的結(jié)果不是C:\FSO\Scripts而是C:\FSO下有和C:\Scripts有同樣的文件。如果你想更改文件夾叫C:\FSO\Scripts,你應(yīng)該將目標(biāo)文件夾改為C:\FSO\ScriptsConstOverWriteFiles=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.CopyFolder"C:\Scripts","C:\FSO",OverWriteFilesNote:因?yàn)檫@個(gè)CopyFolder是一個(gè)單獨(dú)的操作,你沒(méi)有辦法來(lái)跟蹤它的進(jìn)程。你只是需要簡(jiǎn)單的等待操作的結(jié)束。如果你想監(jiān)視copy命令的過(guò)程,你應(yīng)該用shell應(yīng)用程序。※使用通配符(Wildcards)復(fù)制文件夾用這個(gè)CopyFolder命令也可以拷貝所有文件夾和子文件夾下的文件。這樣可能導(dǎo)致一個(gè)問(wèn)題,如果只是想拷貝C:\FSO下的文件,而不是想拷貝C:\FSO\Subfolder1,C:\FSO\Subfolder2,C:\FSO\Sbufolder3下的文件。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]可是,不幸的是這里沒(méi)有直接的辦法來(lái)不拷貝子文件夾中的文件而只是拷貝父文件夾中的文件,你可以用通配符來(lái)限制子文件夾的拷貝。例如如下的腳本代碼只是拷貝以log字母開(kāi)頭的文件夾。但是,你用通配符的時(shí)候就只是拷貝那些符合特定要求的文件夾才被拷貝:objFSO.CopyFolder"C:\Scripts\Log*","C:\Archive",True當(dāng)上面的腳本代碼執(zhí)行的時(shí)候,C:\Scripts\logs,C:\Scripts\Logfiles被拷貝了,包括它們的文件和子文件夾中的文件。但是,在C:\Scripts的文件沒(méi)有被拷貝。當(dāng)你用CopyFolder方法的時(shí)候,你不能只是拷貝文件夾中的文件,而不拷貝子文件夾中的蚊子。如果你想只是拷貝文件而不拷貝子文件夾的文件,你可以應(yīng)用CopyFile方法?!苿?dòng)文件夾作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]當(dāng)你復(fù)制一個(gè)文件夾從一個(gè)地方到另外一個(gè)地方的時(shí)候,你以復(fù)制結(jié)束而告終。有時(shí)候這個(gè)正是你想要的,但是有的時(shí)候,你不需要兩份文件的信息,你或許希望將文件夾從計(jì)算機(jī)A移動(dòng)到計(jì)算機(jī)B,或者從硬盤(pán)C移動(dòng)到硬盤(pán)D。移動(dòng)工作總會(huì)移動(dòng)到特定磁盤(pán)的剩余空間上。例如你或許會(huì)周期的將很少訪問(wèn)的文件夾移動(dòng)到存檔磁盤(pán)中。此外你或許有一個(gè)腳本來(lái)監(jiān)視本地計(jì)算機(jī)的信息,當(dāng)監(jiān)視結(jié)束的時(shí)候,你需要將它上傳到服務(wù)器,然后將本地文件刪除,然后本地計(jì)算機(jī)就開(kāi)始下一次的監(jiān)視。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]MoveFolder需要兩個(gè)參數(shù):1、 Sourcefolder源文件夾,可以是本地路徑或者是UNC路徑。2、 Destinationfolder目標(biāo)文件夾,這個(gè)文件系也可是本地或者UNC路徑。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]如果你的目標(biāo)文件夾不存在,那么移動(dòng)是成功的。如果目標(biāo)文件夾存在,那么不成功。你不能用這個(gè)MoveFolder的方法來(lái)覆蓋一個(gè)文件夾。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]下例腳本中,移動(dòng)本地的文件夾C:\Scripts到一個(gè)共享的文件夾\\helpdesk\managementSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.MoveFolder"C:\Scripts","\\helpdesk\management"注意用MoveFolder方法當(dāng)腳本失敗后不能循環(huán)操作。例如,假如你的網(wǎng)絡(luò)連接在腳本將文件從一個(gè)計(jì)算機(jī)移動(dòng)到另外一個(gè)計(jì)算機(jī)完成前失敗了,那么很有可能你一些文件在計(jì)算機(jī)A上,另外一些文件在計(jì)算機(jī)B上,也有可能在移動(dòng)的過(guò)程中丟失一些文件。因?yàn)檫@個(gè)MoveFolder的方法無(wú)法讓腳本恢復(fù)到以前狀態(tài)。因?yàn)槿绱耍慊蛟S需要兩個(gè)方法來(lái)完成文件在網(wǎng)絡(luò)中的移動(dòng):CopyFolder和DeleteFolder。你可以用CopyFolder來(lái)將文件從計(jì)算機(jī)A移動(dòng)到計(jì)算機(jī)B。當(dāng)復(fù)制的操作結(jié)束之后,你用DeleteFolder來(lái)刪除計(jì)算機(jī)A上的文件,當(dāng)復(fù)制操作失敗的時(shí)候,你可以確保你的文件還在你的計(jì)算機(jī)上。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]※重命名文件夾作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]在FSO中沒(méi)有提供RenameFolder方法重新命名文件夾。但是可以用MoveFolder方法來(lái)將文件夾移動(dòng)到相對(duì)同樣的位置,例如假如有文件夾路徑如下:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\CurrentLogs如果你用Windows瀏覽器來(lái)更改文件夾的名字,那么文件夾還是它本身作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\ArchivedLogsMoveFolder的方法可以讓你完成同樣任務(wù),你將C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\CurrentLogs作為源路徑,將C:\Scripts\PerformanceMonitoring\Servers\DomainControllers\ArchivedLogs作為目標(biāo)路徑。這樣的結(jié)果和在windows瀏覽器中更改文件夾的名字效果是樣的。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]例如,下例中的腳本將文件夾C:\FSO\Samples更改為C:\FSO\Scripts在腳本運(yùn)行之前,Sample是C:\Scripts的文件夾,在腳本運(yùn)行之后,就是C:\FSO的子文件夾了。此外Scripts(FSO下的)含有原來(lái)Sample所有的文件和子文件。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]SetobjFSO=CreateObject("Scripting.FileSystemObject")2objFSO.MoveFolder"C:\FSO\Samples","C:\FSO\Scripts"◎VBS腳本運(yùn)行庫(kù)手冊(cè)之五(文件夾屬性)2007年05月14日星期一下午08:52※獲得文件夾屬性作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]因?yàn)槲募A是一個(gè)COM對(duì)象,它們的屬性可以被獲得和列舉出來(lái),為了列舉詳細(xì)的文件夾信息,你可以用文件夾對(duì)象,它是FSO的組件之一。文件夾對(duì)象的屬性列舉在了下表中。Attributes關(guān)于文件夾的屬性信息。DateCreated文件夾創(chuàng)建的日期DateLastAccessed 用戶最后訪問(wèn)這個(gè)文件夾的日期DateLastModified 用戶最后更改文件夾屬性的日期Drive 磁盤(pán)信息包括拖尾符號(hào)(比如,C:)標(biāo)識(shí)文件夾所在的磁盤(pán)作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Files存儲(chǔ)在這個(gè)文件夾中所有文件的信息。IsRootFolderBoolean值來(lái)表明這個(gè)文件夾是否是根文件夾Name文件夾的名字但不包括路徑信息ParentFolder文件夾存放的父文件夾的名字PropertyDescriptionShortNameMS-DOS類型的文件夾的名字,遵循8.3的命名規(guī)則。ShortPathMS-DOS類型的文件夾的名字,遵循8.3的命名規(guī)則。Size 文件夾的大小,單位是bytes,包含子文件和子文件夾的大小在內(nèi)。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]SubFolders 第一層的子文件夾。在Subfolders中的子文件夾不在此列中。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Type 對(duì)于文件夾的描述※列舉文件夾的屬性為了得到一個(gè)文件夾的屬性,一個(gè)腳本必須:創(chuàng)建一個(gè)FSO實(shí)例用GetFolder的方法綁定特定文件夾用Echo的方法顯示屬性。當(dāng)你對(duì)一個(gè)文件夾的屬性進(jìn)行操作的時(shí)候,注意文件的屬性和子文件夾的屬性是以集合的形式返回的,不是單獨(dú)返回一個(gè)的。此外Attributes屬性返回一個(gè)屬性值。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]SetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")Wscript.Echo"Datecreated:"&objFolder.DateCreatedWscript.Echo"Datelastaccessed:"&objFolder.DateLastAccessedWscript.Echo"Datelastmodified:"&objFolder.DateLastModifiedWscript.Echo"Drive:"&objFolder.DriveWscript.Echo"Isrootfolder:"&objFolder.IsRootFolderWscript.Echo"Name:"&objFolder.NameWscript.Echo"Path:"&objFolder.PathWscript.Echo"Shortname:"&objFolder.ShortNameWscript.Echo"Shortpath:"&objFolder.ShortPathWscript.Echo"Size:"&objFolder.SizeWscript.Echo"Type:"&objFolder.Type※管理文件夾的屬性作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]文件系統(tǒng)支持屬性的定義。就是文件夾中和文件夾名字和文件夾大小無(wú)關(guān)的信息。例如如果你在Windows瀏覽器中右擊某個(gè)數(shù)據(jù)夾的時(shí)候,點(diǎn)Properties你就可以訪問(wèn)文件夾的屬性了。FSO可以返回幾個(gè)關(guān)于文件夾信息的重要屬性。這些屬性和相應(yīng)的值,列舉在下表中:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Hidden2隱藏,就是在Windows瀏覽器中不可見(jiàn)System4System4Directory16 應(yīng)用到所有的文件夾的標(biāo)準(zhǔn)值。所有可以被FSO訪問(wèn)的文件作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]夾讀有這個(gè)值,最小位16。Archive 32 存盤(pán)的屬性用在備份程序中,用來(lái)決定文件是否需要備份。如果這個(gè)值enabling表示文件夾在下一次增量備份中會(huì)備份。如果是disabling表示不在下一次增量備份中備份Compressed2048表明這個(gè)文件夾是否是壓縮的雖然這些看起來(lái)很簡(jiǎn)單,但是從FSO返回的數(shù)據(jù)看起來(lái)會(huì)讓你感到很迷惑。例如,你返回一個(gè)文件夾的屬性值,你或許會(huì)看到20,但是這個(gè)值并不是像上面一樣的標(biāo)準(zhǔn)值。此外,你可能會(huì)獲得一個(gè)單獨(dú)的值,雖然這個(gè)文件夾有說(shuō)有的屬性。這種情況是,腳本并不是返回如2,4,16,32,2048這樣的值,而只是返回一個(gè)2102。這是因?yàn)檫@些值是以位圖的形式顯示的。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]◎VBS腳本運(yùn)行庫(kù)手冊(cè)之六(文件夾屬性)2007年05月16日星期三下午08:57Note:對(duì)于屬性值,它返回和存儲(chǔ)的數(shù)據(jù)是以位圖的形式的。對(duì)于位圖你應(yīng)該不會(huì)奇怪,比如后綴名為.bmp的圖形文件WorkingwithBitmaps作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]位圖看起來(lái)就是一系列的開(kāi)關(guān)。如果特定的開(kāi)關(guān)是關(guān)閉的,那么這個(gè)開(kāi)關(guān)的值就是0,如果是開(kāi)啟的,比如文件夾對(duì)象吧,它就具有上表中所列出的值。而位圖的值就是這些開(kāi)關(guān)的值的總和。如果你用腳本查詢這個(gè)文件夾的屬性,腳本就返回一個(gè)值為16.與其相反,如果有三個(gè)開(kāi)關(guān)是開(kāi)啟的:隱藏(值是2)‘Directory(值是16),壓縮(值是2048).那么這個(gè)位圖的值應(yīng)該是2+16+2048,或者值是2066。這個(gè)也是用腳本查詢的時(shí)候返回的值。位圖被設(shè)計(jì)成只是有一種辦法來(lái)獲取特定的值。得到值2066的方法只有一個(gè)就是壓縮和隱藏。你不可能通過(guò)別的數(shù)學(xué)方法來(lái)算得這樣的值。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]這個(gè)設(shè)計(jì)可以返回值并且決定哪個(gè)開(kāi)關(guān)沒(méi)有開(kāi)哪個(gè)沒(méi)有開(kāi)。這個(gè)可以允許你來(lái)判斷文件夾的哪個(gè)屬性設(shè)定了。如果你得到了這個(gè)2066的值,那么它的屬性就是隱藏壓縮的文件夾。幸運(yùn)的是,你不必去作任何單獨(dú)的數(shù)字運(yùn)算,你可以用邏輯與AND操作來(lái)決定哪個(gè)開(kāi)關(guān)是否是on還是off。例如如下代碼查詢文件夾是否是隱藏的,如果是回顯一個(gè)信息框:HiddenfolderIfobjFolder.AttributesAND2ThenWscript.Echo"Hiddenfolder."EndIf或者:IfobjFolder.AttributesAND16Then下列腳本先綁定文件夾C:\FSO,然后回顯文件夾屬性:(譯者注:這個(gè)其實(shí)是挨個(gè)匹配的,所以你要是測(cè)試了兩個(gè)屬性,它都會(huì)顯示出來(lái)的。)SetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")IfobjFolder.AttributesAND2ThenWscript.Echo"Hiddenfolder."
5EndIf作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]6IfobjFolder.AttributesAND4Then7Wscript.Echo"Systemfolder."8EndIf作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]9IfobjFolder.AttributesAND16Then10Wscript.Echo"Folder."11EndIf作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]12IfobjFolder.AttributesAND32Then13Wscript.Echo"Archivebitset."14EndIf作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]15IfobjFolder.AttributesAND2048Then16Wscript.Echo"Compressedfolder."17EndIf作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]※改變文件夾屬性文件夾的每個(gè)屬性可以看成一個(gè)個(gè)開(kāi)關(guān),如果關(guān)于隱藏的開(kāi)關(guān)是ON的,那么這個(gè)文件夾就是隱藏的,如果這個(gè)開(kāi)關(guān)是OFF的,那么這個(gè)文件夾就不是隱藏的,你可以選擇打開(kāi)或者關(guān)掉它們,對(duì)于文件夾的屬性也是如此:對(duì)于其它的開(kāi)關(guān),你可以將屬性設(shè)置為開(kāi)或者設(shè)置為關(guān),你可以用腳本來(lái)控制這些開(kāi)關(guān)的,最簡(jiǎn)單的控制屬性開(kāi)關(guān)的辦法是用如下的程序:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]1.用GetFolder的方法來(lái)綁定到一個(gè)文件夾。檢查你需要更改的值。例如你想隱藏一個(gè)文件夾,看這個(gè)文件夾是否是已經(jīng)隱藏了作者臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]如果這個(gè)文件夾是隱藏的,用XOR操作來(lái)將開(kāi)關(guān)轉(zhuǎn)換成非隱藏的。如果這個(gè)文件夾不是隱藏的,注意不要用XOR,如果你用了,開(kāi)關(guān)會(huì)被觸發(fā),文件夾會(huì)中止于隱藏。例如,下列腳本用AND來(lái)判斷文件夾C:\FSO的隱藏屬性開(kāi)關(guān)是否開(kāi)著。如果它是開(kāi)的,腳本用XOR操作來(lái)將開(kāi)關(guān)關(guān)閉來(lái)顯示文件夾。SetobjFolder=objFSO.GetFolder("C:\FSO")IfobjFolder.AttributesAND2ThenobjFolder.Attributes=objFolder.AttributesXOR25 EndIf作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]除非很少的一些情況以外,文件夾用來(lái)作為單獨(dú)存放文件的地方。有時(shí)候,這些文件夾是系統(tǒng)需要的。例如操作系統(tǒng)希望在特定的文件夾內(nèi)找到特定的文件。在其它的一些時(shí)候,文件夾是系統(tǒng)管理員管理計(jì)算機(jī)的一種工具也是用戶管理文件的工具。系統(tǒng)管理員可能希望將腳本放在叫做Scripts的文件夾,將一些trouble-shooting的工具放在叫做DiagnosticTools的文件夾。用戶或許將他們預(yù)算信息放在叫做Budgets的文件夾,而將薪水的信息放在叫做Timecards的文件夾。當(dāng)然,文件夾一般是限制使用的,你必須知道這個(gè)文件夾是存放的是什么文件。系統(tǒng)管理員需要知道是不是有個(gè)特定的腳本存在C:\Scripts文件夾中,用戶需要知道是不是有個(gè)特定的窗體存在C:\Budgets的文件夾中。文件夾對(duì)象包含了一些屬性可用來(lái)返回存儲(chǔ)在文件夾內(nèi)文件集合的信息,為了得到這些信息,你的腳本必須:創(chuàng)建一個(gè)FSO對(duì)象實(shí)例。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]2.用GetFolder的方法來(lái)綁定到一個(gè)適當(dāng)?shù)奈募A。3.設(shè)置一個(gè)對(duì)象reference來(lái)指向文件夾的屬性用ForEach循環(huán)來(lái)列舉出所有的文件和他們的屬性。腳本不必去綁定到每一個(gè)單獨(dú)的文件去獲得文件的信息。在下列腳本中返回在文件夾C:\FSO下所有文件的信息并且回顯他們的名字和大?。篠etobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFolder=objFSO.GetFolder("C:\FSO")SetcolFiles=objFolder.FilesForEachobjFileincolFilesWscript.EchoobjFile.Name,objFile.Size6Next作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]對(duì)于大多數(shù)返回的集合來(lái)說(shuō),你不能控制輸出信息的順序。就是說(shuō)你不能將輸出的格式定義為按照名字,按照大小或者其它別的原則。如果你想讓輸出的東西按照特定的格式,你就必須將他們拷貝到數(shù)組,目錄或者一個(gè)disconnectedrecordset然后將他們分類排列。為了需要知道文件夾中存放的文件,你需要知道文件夾子文件夾,這樣,你才能更好的了解文件夾的整體結(jié)構(gòu)。文件夾對(duì)象包含了一個(gè)Subfolders屬性,用來(lái)放會(huì)在文件夾下的top-level子文件夾的信息。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Top-level子文件夾是直接在文件夾下面的。在子文件夾中的子文件夾不在這個(gè)范圍之內(nèi)。例如,在下例中,只有Subfolder1Subfolder2是文件夾scripts的top-level的子文件夾。所以,如果用Subfolders這個(gè)屬性來(lái)返回值的話,就只是會(huì)返回Subfolder1和Subfolder2◎VBS腳本運(yùn)行庫(kù)手冊(cè)之八(管理文件)2007年05月20日星期日下午08:01ManagingFiles作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]管理文件系統(tǒng)的最終任務(wù)還是歸結(jié)為管理單獨(dú)的文件。作為一個(gè)系統(tǒng)管理員,你的工作是跟蹤存儲(chǔ)在計(jì)算機(jī)上的文件。例如,你需要知道正確的診斷工具是否被復(fù)制到了server上,你需要知道特定的文件(比如游戲文件或者音樂(lè)文件)是否被復(fù)制到了文件服務(wù)器上了,盡管你用了組策略去阻止他們將文件拷貝到文件的server。你需要知道是否有的文件放在計(jì)算機(jī)上已經(jīng)有幾個(gè)月沒(méi)有去訪問(wèn)了,而這些功能通過(guò)類似知道磁盤(pán)的剩余空間這樣的操作是無(wú)法知道的。此外為了跟蹤這些文件,你也需要?jiǎng)討B(tài)的管理他們:需要復(fù)制,需要移動(dòng),需要重新命名,需要?jiǎng)h除。FSO提供了一些方法來(lái)幫助你完成這些管理任務(wù)。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]BindingtoaFile作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]FSO給你提供了一些方法,比如CopyFile,DeleteFile允許你的腳本不用綁定一個(gè)特定的文件就可以對(duì)文件實(shí)例進(jìn)行操作。而其它的任務(wù),就需要文件對(duì)象。比如,為了獲得一些屬性,你的腳本首先就需要綁定到一個(gè)文件,然后再獲得文件的屬性。GetFile方法允許你綁定到一個(gè)獨(dú)立的文件。為了做到這點(diǎn),你先創(chuàng)建一個(gè)FSO實(shí)例,然后創(chuàng)建一個(gè)文件對(duì)象。當(dāng)你用GetFile方法的時(shí)候,你必須:1、確定文件的路徑:這個(gè)路徑可以是一個(gè)本地路徑,也可以是一個(gè)UNC路徑(例如:Waccounting\receivables\scriptlog.txt)在路徑當(dāng)中你不能用通配符也不能有多個(gè)文件。用GetFile方法你在同一個(gè)時(shí)刻只能綁定一個(gè)單獨(dú)的文件。2、當(dāng)綁定的對(duì)象分配給一個(gè)變量的時(shí)候就要用到Set這個(gè)關(guān)鍵詞。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]例如,下面腳本綁定到了文件:C:\FSO\Scriptlog.txtSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.GetFile("C:\FSO\ScriptLog.txt")一般來(lái)講,你最好用絕對(duì)路徑來(lái)作GetFile的參數(shù)。這樣確保腳本總是可以在文件中運(yùn)行。但是,用相對(duì)路徑也是可以的。例如,如下的腳本代碼會(huì)綁定到Scriptlog.txt會(huì)成功,因?yàn)槟_本和這個(gè)文件在同一個(gè)文件夾里面:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]objFSO.GetFile("ScriptLog.txt")同樣,下面的代碼實(shí)例如果這個(gè)腳本和這個(gè)文件在同一個(gè)文件夾也會(huì)綁定到Scriptlog.txt:作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]objFSO.GetFile(".\ScriptLog.txt")注意:FSO不會(huì)用路徑環(huán)境信息去搜索文件。例如,你可以在命令行中敲如calc.exe來(lái)打開(kāi)計(jì)算機(jī),而無(wú)論你當(dāng)前的目錄是在哪里,因?yàn)椴僮飨到y(tǒng)默認(rèn)的情況下去搜索所有的文件的但是用這個(gè)GetFile方法的時(shí)候,它不是這樣的工作的。如下腳本除非是在文件夾C:\Windows\System32的文件夾下,否則都不會(huì)運(yùn)行成功的。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]objFSO.GetFile("calc.exe")有時(shí)知道文件是否存在是十分重要的,這個(gè)可以作為軟件清單的一部分。例如你或許希望檢查所有的郵件服務(wù)器來(lái)看特定的腳本是否存在。用腳本來(lái)實(shí)現(xiàn)系統(tǒng)管理任務(wù)來(lái)說(shuō),知道腳本存在與否很重要的。比如你或許希望當(dāng)你復(fù)制、移動(dòng)、刪除或者操作不存在的文件的時(shí)候腳本報(bào)錯(cuò)。為了避免出現(xiàn)錯(cuò)誤,你可以用FileExists方法來(lái)檢查文件是否存在。FileExists方法要求一個(gè)單獨(dú)的參數(shù):文件的路徑,然后返回一個(gè)特定的Boolean值:如果文件存在,返回的是True,如果文件不存在,返回的是False。如下面腳本用FileExists方法來(lái)檢查文件C:\FSO\Scriptlog.txt是否存在,如果存在,用GetFile方法來(lái)綁定到這個(gè)文件,如果不存在,腳本回顯一個(gè)message“filedoesnotexist”SetobjFSO=CreateObject("Scripting.FileSystemObject")IfobjFSO.FileExists("C:\FSO\ScriptLog.txt")ThenSetobjFile=objFSO.GetFile("C:\FSO\ScriptLog.txt")Else作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Wscript.Echo"Filedoesnotexist.?EndIf作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]你不能用通配符來(lái)檢查文件夾中特定類型的文件是否存在,你也不能用通配符拉來(lái)檢查文件夾中所有的文件。如下面腳本,無(wú)論在文件夾C:\FSO\T存在多少文件,都不會(huì)報(bào)錯(cuò)出來(lái),而是總是返回一個(gè)False.作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]WScript.EchoobjFSO.FileExists("C:\FSO\*.*")如果你希望遵循一些條件原則檢查一些文件而不是基于路徑,你有下面兩個(gè)選擇:1、用GetFolder對(duì)象來(lái)綁定一個(gè)文件夾,然后返回文件的屬性,這樣重復(fù)操作直到篩選出你感興趣的。例如,你可以列舉出所有的文件和文件的擴(kuò)展名,然后跟蹤看有多少個(gè)后綴名為.doc的文件。2、用WMI,它允許你創(chuàng)建更多的目標(biāo)查詢。比如選出所有后綴名為.doc的文件。你可以用計(jì)數(shù)的辦法來(lái)返回你要的特定的條目。如果數(shù)值是0那么,最少有一個(gè)是doc的文件。DeletingaFile作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]用FSO來(lái)創(chuàng)建腳本刪除文件讓你可以自動(dòng)執(zhí)行類似與磁盤(pán)清理之類的操作。例如,你可以用腳本定期查詢和刪除所有的臨時(shí)文件。你也可以依照一些規(guī)則來(lái)刪除文件,比如刪除六個(gè)月都沒(méi)有被訪問(wèn)的文件,或者特定的后綴名的文件,比如(.bmp或者.mp3)你可以首先創(chuàng)建FSO對(duì)象實(shí)例,然后調(diào)用DeleteFile方法來(lái)刪除文件,輸入文件路徑作為參數(shù)。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]如下面腳本刪除了文件C:\FSO\Scriptlog.txtSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.DeleteFile("C:\FSO\ScriptLog.txt")默認(rèn)的情況下,DeleteFile方法不會(huì)刪除只讀文件。事實(shí)上,當(dāng)你嘗試刪除一個(gè)只讀文件時(shí),腳本會(huì)報(bào)錯(cuò)出來(lái)。為了避免這樣的錯(cuò)誤出現(xiàn),如想刪除只讀文件的話,需添加強(qiáng)制參數(shù),當(dāng)強(qiáng)制參數(shù)設(shè)成True的時(shí)候,那么DeleteFile可以刪除任何文件。如下面這行代碼可以刪除文件Scriptlog.txt,即使它只是一個(gè)只讀文件。1、 objFSO.DeleteFile("C:\FSO\ScriptLog.txt",True)2、 DeletingaSetofFiles有時(shí)候你希望刪除特定的、單獨(dú)的文件。更有可能的是你可能想用腳本來(lái)刪除一系列的文件。如在周末你或許想刪除一些存盤(pán)了的日志文件或所有的臨時(shí)文件。你可以通過(guò)通配符來(lái)刪除一個(gè)文件夾之內(nèi)的一些文件。但是你不能用DeleteFile方法來(lái)直接刪除多個(gè)文件夾內(nèi)部的文件。你可以通過(guò)用篩選每個(gè)數(shù)據(jù)夾的辦法來(lái)逐個(gè)刪除每個(gè)文件夾內(nèi)部的文件。如果你想刪除多個(gè)文件夾內(nèi)部的特定類型的文件(比如刪除計(jì)算機(jī)上全部的.TMP文件)你應(yīng)該用WMI而不是用FSO。為了刪除一系列文件,調(diào)用DeleteFile方法,根據(jù)文件的名字或者后綴名添加通配符來(lái)提供文件夾的路徑。例如,下面的代碼用來(lái)刪除文件夾C:\FSO文件夾下的所有后綴名為.doc的文件。objFSO.DeleteFile("C:\FSO\*.doc")下面的這行代碼用來(lái)刪除所有文件名帶有l(wèi)og的文件:objFSO.DeleteFile("C:\FSO\*log.*")正如前面提到的那樣,DeleteFile方法不刪除標(biāo)記為只讀的文件。如果你的腳本嘗試去刪除一個(gè)只讀的文檔,腳本會(huì)報(bào)錯(cuò),雖然你用了OnErrorResumeNext語(yǔ)句。例如你想刪除1000個(gè)txt文件,并且只有一個(gè)文件標(biāo)記為只讀了。當(dāng)腳本嘗試去刪除這個(gè)文件的時(shí)候,會(huì)產(chǎn)生一個(gè)腳本運(yùn)行的錯(cuò)誤,這個(gè)DeleteFile方法中止。腳本不去嘗試去刪除其它的文件,雖然其它的文件不是只讀的。因?yàn)檫@個(gè)原因,你可以用可選擇的:強(qiáng)制參數(shù),將它的值設(shè)置成True。當(dāng)這個(gè)參數(shù)設(shè)置成True的時(shí)候,DeleteFile方法可以刪除只讀文件。當(dāng)這個(gè)參數(shù)被設(shè)置成False的時(shí)候,就不能刪除只讀文件。下面腳本用來(lái)刪除文件夾C:\FSO下的所有文件,為了確保刪除包括只讀文件在內(nèi)的文件,強(qiáng)制參數(shù)被設(shè)置成True。并且使用了這個(gè)DeleteReadOnly常量。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]ConstDeleteReadOnly=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.DeleteFile("C:\FSO\*.txt"),DeleteReadOnly如果你想刪除所有不是只讀的文件怎么辦呢?在這種情況下,你可以返回一個(gè)集合,用文件屬性來(lái)獲得文件屬性,是否為只讀,如果是就不刪除,否則就刪除。◎VBS腳本運(yùn)行庫(kù)手冊(cè)之九(復(fù)制和移動(dòng)文件)2007年05月25日星期五上午09:50CopyingaFile作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]拷貝文件,無(wú)論是從計(jì)算機(jī)上的一個(gè)文件夾到另外一個(gè)文件夾還是從一個(gè)計(jì)算機(jī)到另外一個(gè)計(jì)算機(jī),都是一個(gè)非常常見(jiàn)的管理任務(wù)。如你希望拷貝一個(gè)監(jiān)視的腳本到你所有的服務(wù)器上面來(lái)取代過(guò)去的DLL文件。CopyFile方法提供了這種任務(wù)管理的辦法。CopyFile方法需要兩個(gè)必備參數(shù)和一個(gè)可選的參數(shù):1、 Source-要拷貝的文件的源文件的路徑。2、 Destination—目標(biāo)文件夾的路徑。為了確保在目標(biāo)文件夾也是同樣的名字,將一個(gè)脫尾符放在文件夾的結(jié)束之前(“\”)objFSO.CopyFile"C:\FSO\ScriptLog.txt","D:\Archive\"如果你想重新命名該文件,你可以將全路徑寫(xiě)成如下的格式:objFSO.CopyFile"C:\FSO\ScriptLog.txt","D:\Archive\NewFileName.txt"如果目標(biāo)文件夾不存在,則會(huì)自動(dòng)創(chuàng)建。3、Overwrite可選。默認(rèn)情況下,CopyFile方法不能復(fù)制到目標(biāo)文件夾存在的同名文件。這導(dǎo)致錯(cuò)誤。比如你要更高的版本覆蓋存在的文件,那么將這個(gè)參數(shù)設(shè)置成True。下面腳本拷貝文件C:\FSO\Scriptlog.txt到文件夾D:\Archive。Theoriginalfile,C:\FSO\ScriptLog.txt.Thecopiedfile,D:\Archive\ScriptLog.txt.為了保證拷貝的正常進(jìn)行,即使存在D:\Archive\Scriptlog.txt,腳本將可選參數(shù)Overwrite設(shè)置成True(用常量OverWriteExisting)ConstOverwriteExisting=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.CopyFile"C:\FSO\ScriptLog.txt","D:\Archive\",OverwriteExisting作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]當(dāng)你確定一個(gè)目標(biāo)文件夾的時(shí)候,脫尾的反斜線是十分必要的。(例如D:\Archive\)如果你的反斜線在,那么文件會(huì)被拷貝到Archive文件夾,如果反斜線不在的話,腳本的CopyFile嘗試去建立一個(gè)叫做D:\Achive的文件夾。如果這個(gè)文件夾存在,那么會(huì)產(chǎn)生一個(gè)”P(pán)ermissiondeniedError”的錯(cuò)誤出來(lái),拷貝的進(jìn)程會(huì)失敗的。這個(gè)對(duì)于只讀文件來(lái)說(shuō)也是錯(cuò)誤的,雖然你可能將強(qiáng)制參數(shù)設(shè)置成True。如果沒(méi)有反斜線,你必須先將原來(lái)的文件刪除,然后再調(diào)用CopyFile方法來(lái)實(shí)現(xiàn)。CopyingaSetofFiles通配符提供了一種拷貝整個(gè)文件夾中所有的文件的方法。你可以用腳本復(fù)制一些具有共同參數(shù)的文件。例如下列腳本拷貝在C:\FSO中所有的txt文件到D:\Archive.ConstOverwriteExisting=TrueSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.CopyFile"C:\FSO\*.txt","D:\Archive\",OverwriteExisting在CopyFile的方法中添加通配符來(lái)拷貝文件的時(shí)候,只是拷貝當(dāng)前文件夾的文件。而用CopyFolder的方法,正好相反,它也拷貝子文件夾的信息和文件。如下的腳本代碼語(yǔ)句拷貝文件夾C:\FSO中所有的文件,而不拷貝子文件夾的信息。objFSO.CopyFile"C:\FSO\*.*","D:\Archive\"MovingaFile作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]如你的磁盤(pán)空間很低了,你或許希望將文件移動(dòng)到一個(gè)新的位置;如果你的計(jì)算機(jī)換了規(guī)則,你或許希望移動(dòng)特定的診斷工具取代原來(lái)的。在其它的一些情況下,你或許不希望存在這個(gè)文件的副本,而是將它移動(dòng)到一個(gè)新的位置。MoveFile方法讓你將文件從一個(gè)地方移動(dòng)到另外一個(gè)地方。MoveFile方法和CopyFile的方法類似,你需要?jiǎng)?chuàng)建一個(gè)FSO對(duì)象,然后調(diào)用MoveFile的方法,需要兩個(gè)參數(shù):1、 需要移動(dòng)文件的完整路徑2、 需要移動(dòng)到的目標(biāo)文件夾的路徑,包括脫尾符(反斜線)下例中腳本將C:\FSO\Scriptlog.log移動(dòng)到D盤(pán)的Archive文件夾作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]SetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.MoveFile"C:\FSO\ScriptLog.log","D:\Archive\"MovingaSetofFiles你也可以用通配符來(lái)用一個(gè)操作移動(dòng)多個(gè)文件。如為移動(dòng)所有在文件夾FSO中以data開(kāi)頭的文件,你可以用以下的參數(shù):C:\FSO\Data*.*通配符可以用來(lái)移動(dòng)特定的文件。因?yàn)槲募念愋鸵话闶怯煤缶Y名來(lái)標(biāo)識(shí)的。如下例中腳本移動(dòng)所有的日志文件到D:\ArchiveSetobjFSO=CreateObject("Scripting.FileSystemObject")objFSO.MoveFile"C:\FSO\*.log","D:\Archive\"RenamingaFile作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]FSO并沒(méi)有提供一種直接的方法來(lái)重新命名一個(gè)文件。但是和MoveFolder的方法可以重新命名文件夾一樣,你也可以用MoveFile的方法來(lái)重新命名文件。為了重新命名一個(gè)文件,你可以用MoveFile的方法,但是目標(biāo)文件夾應(yīng)為當(dāng)前的文件夾。如在下例腳本中,將Scriptlog.txt重新命名為Backuplog.txt。而在技術(shù)上是腳本實(shí)際上將C:\FSO\Scriptlog.txt移動(dòng)到一個(gè)新的路徑C:\FSO\Backuplog.txt,結(jié)果是將文件重新命名了。SetobjFSO=CreateObject("Scripting.FileSystemObject")2 objFSO.MoveFile"C:\FSO\ScriptLog.txt","C:\FSO\BackupLog.txt"作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]◎VBS腳本運(yùn)行庫(kù)手冊(cè)之十(文件的屬性)2007年05月26日星期六下午02:34文件有些屬性對(duì)于文件的管理來(lái)說(shuō)十分重要,如屬性DateLastAccssed告訴你最后打開(kāi)這個(gè)文件的日期。屬性Size告訴你文件有多少個(gè)bytes,系統(tǒng)管理員可以通過(guò)windows資源管理器或者命令行工具去訪問(wèn)文件的屬性。雖然這些工具可以返回計(jì)算機(jī)上文件的信息,但是他們不是被設(shè)計(jì)成用來(lái)保存和操作文件屬性的。此外,這些工具大多功能有限,不能使系統(tǒng)管理員很好的通過(guò)屬性來(lái)周期性的清理磁盤(pán)或者尋找出滿足特定屬性的文件集合。幸運(yùn)的是,你可以通過(guò)FSO來(lái)獲得計(jì)算機(jī)上任何文件的詳細(xì)信息。和其它的工具相比,FSO可以讓你查詢一個(gè)文件或者一組文件的信息。作者:臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]Attributes文件的位圖屬性。DateCreated文件的創(chuàng)建日期。DateLastAccessed數(shù)據(jù)的最后訪問(wèn)日期。DateLastModified數(shù)據(jù)的最后更改日期。Drive磁盤(pán)驅(qū)動(dòng)器和托尾符(例如:C:)代表文件存在的磁盤(pán)上。Name文件的名字,不包含文件的路徑ParentFolder父文件夾的名字。例如,C:\Windows\System32\Scrrun.dll的父文件夾名字是WindowsPath文件的路徑,比如C:\Windows\System32\Scrrun.dllShortNameMS-DOS類型的文件名,符合8.3命名規(guī)則的。ShortPathMS-DOS-style文件名字。符合8.3命名規(guī)則的。Size文件的大小,單位是bytesType 文件類型,是在注冊(cè)表區(qū)中對(duì)于此文件類型的字符串描述。作者臨汾市外事旅游局薛靖瀾,轉(zhuǎn)載請(qǐng)注明出處]為了訪問(wèn)這些屬性,你必須:1.創(chuàng)建一個(gè)FSO對(duì)象實(shí)例。用Echo(或者其它的處理辦法)來(lái)表達(dá)出文件的屬性。如下面的腳本用GetFile的方法來(lái)綁定到文件C:\Windows\System32\Scrrun.dll然后返回一些它的屬性:SetobjFSO=CreateObject("Scripting.FileSystemObject")SetobjFile=objFSO.GetFile("c:\windows\system32\scrrun.dll")Wscript.Echo"Datecreated:"&objFile.DateCreatedWscript.Echo"Datelastaccessed:"&objFile.DateLastAccessedWscript.Echo"Datelastmodified:"&objFile.DateLastModifiedWscript.Echo"Drive:"&objFile.DriveWscript.Echo"Name:"&objFile.NameWscript.Echo"Parentfolder:"&objFile.ParentFolderWscript.Echo"Path:"&objFile.PathWscript.Echo"Shortname:"&objFile.ShortNameWscript.Echo"Shortpath:"&objFile.ShortPathWscript.Echo"Size:"&objFile.SizeWscript.Echo"Type:"&objFile.Type文件為只讀。True。??Normal0和文件夾一樣,文件有些屬性可以通過(guò)FSO返回和配置,有些屬性比如位圖屬性就不能通過(guò)FSO文件為只讀。True。??Normal0Read-onlyHidden文件在Windows瀏覽器中是隱藏的。Hidden文件在Windows瀏覽器中是隱藏的。System文件是操作系統(tǒng)必須的。Alias64此文件是其它文件的快捷方式Compressed2048此文件是壓縮的。想獲得文件的這些屬性,用GetFile方法來(lái)綁定一個(gè)文件,在你創(chuàng)建完了這個(gè)文件對(duì)象的reference之后,你可以用邏輯與操作來(lái)決定這些屬性。如果沒(méi)有任何屬性被設(shè)置了,那么這個(gè)值就是0。如下面腳本綁定了文件C:\FSO\Scriptlog.txt然后檢查每個(gè)屬性并用F
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年短期工作人員風(fēng)險(xiǎn)控制協(xié)議
- 2025年電信服務(wù)用戶權(quán)益保護(hù)協(xié)議案例
- 個(gè)人信用抵押借款合同例文
- 2025年采購(gòu)協(xié)同協(xié)議書(shū)
- 個(gè)人二手貨車買賣合同樣本
- 臨時(shí)工雇傭合同模板
- 兩人知識(shí)產(chǎn)權(quán)合作協(xié)議范本(經(jīng)典)
- XX公司與XX供應(yīng)商空調(diào)采購(gòu)框架合同2025
- 書(shū)店轉(zhuǎn)讓合同書(shū)
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 液壓動(dòng)力元件-柱塞泵課件講解
- 人教版五年級(jí)上冊(cè)數(shù)學(xué)脫式計(jì)算100題及答案
- 屋面細(xì)石混凝土保護(hù)層施工方案及方法
- 2024年1月山西省高三年級(jí)適應(yīng)性調(diào)研測(cè)試(一模)理科綜合試卷(含答案)
- 110kv各類型變壓器的計(jì)算單
- 雙減政策之下老師如何打造高效課堂
- 5A+Chapter+1+Changes+at+home+課件(新思維小學(xué)英語(yǔ))
- 安徽省2023年中考數(shù)學(xué)試卷(附答案)
- 護(hù)工(陪護(hù))培訓(xùn)教材(完整版)資料
- 機(jī)械加工生產(chǎn)計(jì)劃排程表
評(píng)論
0/150
提交評(píng)論