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