VBScript入门篇
VBScript入門篇
作者:尹正杰
版權(quán)聲明:原創(chuàng)作品,謝絕轉(zhuǎn)載!否則將追究法律責(zé)任。
?
?
一.定義一個過程
?
1 定義一個過程:可以將相同的操作的代碼提取出來,方便其他人來調(diào)用這段代碼,可以減少你的代碼的重復(fù)性 2 3 4 Option Explicit 5 '@author :yinzhengjie 6 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 7 'EMAIL:y1053419035@qq.com 8 9 10 '定義一個數(shù)組 11 Dim ary_1(2) 12 ary_1(0) = 100 13 ary_1(1) = 200 14 ary_1(2) = 300 15 16 17 '定義一個過程的方法,Sub表示一個過程的開始,End Sub表示一個過程的結(jié)束標(biāo)識符 18 Sub max_number(num_1,num_2,num_3) 19 Dim max 20 If num_1 > num_2 Then 21 max = num_1 22 Else 23 max = num_2 24 End If 25 If num_3 > max Then max = num_3 26 MsgBox "最大值是:" & max 27 End Sub 28 29 30 '調(diào)用一個過程的方法,用call方法實(shí)現(xiàn),或者是不用,兩種區(qū)別不大,就是前者有括號,后者無括號 31 Call max_number(1,2,3) '需要用括號將參數(shù)傳遞進(jìn)去 32 Call max_number(ary_1(0),ary_1(1),ary_1(1)) 33 max_number 4,5,6 '如果不用call調(diào)用過程的話,后面?zhèn)鲄⒉恍枰美ㄌ柊饋怼?/span>?
?
二.定義一個函數(shù)
1 定義一個函數(shù): 2 3 Option Explicit 4 '@author :yinzhengjie 5 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 6 'EMAIL:y1053419035@qq.com 7 8 '定義一個數(shù)組 9 Dim ary_1(2),max 10 ary_1(0) = 100 11 ary_1(1) = 200 12 ary_1(2) = 300 13 14 '定義一個函數(shù),Function表示函數(shù)的開始標(biāo)識符,End Function 表示函數(shù)的結(jié)束標(biāo)識符.sub(過程)能實(shí)現(xiàn)的Function(函數(shù))都能實(shí)現(xiàn),而且Function比sub功能更加強(qiáng)大,因?yàn)樗蟹祷刂?#xff0c;請看案例: 15 Function max_number(num_1,num_2,num_3) 16 If num_1 > num_2 Then 17 max_number = num_1 18 Else 19 max_number = num_2 20 End If 21 If num_3 > max Then max_number = num_3 22 'Exit Function表示退出函數(shù) 23 End Function 24 25 '調(diào)用函數(shù)的方法 26 max = max_number(ary_1(0),ary_1(1),ary_1(2)) 27 MsgBox "最大值是:" & max?
三.ByRef 和 ByVal 語句區(qū)別:
1 ByRef 和 ByVal 語句區(qū)別: 2 3 Option Explicit 4 '@author :yinzhengjie 5 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 6 'EMAIL:y1053419035@qq.com 7 8 '定義一個數(shù)組 9 Dim ary_1(2),max 10 ary_1(0) = 100 11 ary_1(1) = 200 12 ary_1(2) = 300 13 14 Function max_number(byval num_1,byref num_2,num_3) 15 MsgBox num_1 & "#" & num_2 16 num_1 = 666666 17 num_2 = 888888 18 19 MsgBox num_1 & "#" & num_2 20 End Function 21 22 max_number ary_1(0),ary_1(1),ary_1(2) 23 MsgBox ary_1(0) & "#" & ary_1(1) 24 25 '通過以上的這個案例,我們可以總結(jié)如下: 26 'ByVal :表示該參數(shù)是按值方式傳遞的。這個只能讓局部生效 27 'ByRef :表示該參數(shù)按引用方式傳遞。表示在局部變量如果改動了某個變量的值,那么會全局生效! 28 '所以不建議用ByRef,因?yàn)槟阒灰晕⒉蛔⒁?#xff0c;就會在全局改變這個變量,我們一般使用的是ByVal?
五.變量的作用域與存活期
變量的作用域由聲明它的位置決定。如果在過程中聲明變量,則只有該過程中的代碼可以訪問或更改變量值,此時變量具有局部作用域并且是過程級變量。如果在過程之外聲明變量,則該變量可以被腳本中所有過程所識別,稱為 Script 級變量,具有腳本級作用域。我們可以通過一個腳本來判斷作用域,方便我們理解
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim num 7 8 num = 100 9 10 getmax 11 12 MsgBox num '全局變量 13 14 Function getmax() 15 Dim num 16 num = 666 '局部變量,而且局部變量的名稱和全局變量名稱重復(fù) 17 MsgBox num 18 num = 888 '修改局部變量所對應(yīng)的值 19 MsgBox num 20 End Function 21 22 '建議實(shí)際生產(chǎn)環(huán)節(jié)中不要在局部變量和全局變量的變量名定義相同的喲,我這里是為了測試,方便大家理解。
變量存在的時間稱為存活期。Script 級變量的存活期從被聲明的一刻起,直到腳本運(yùn)行結(jié)束。對于過程級變量,其存活期僅是該過程運(yùn)行的時間,該過程結(jié)束后,變量隨之消失。在執(zhí)行過程時,局部變量是理想的臨時存儲空間。可以在不同過程中使用同名的局部變量,這是因?yàn)槊總€局部變量只被聲明它的過程識別。
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim ary_1(2),max 7 ary_1(0) = 100 8 ary_1(1) = 200 9 ary_1(2) = 300 10 11 '獲取兩個值中的最大值 12 Public Function get_num(num_1,num_2) 13 pass '我是為了舉列子,此處就用pass代替代碼了 14 End Function 15 16 17 Public Function get_max(num_1,num_2) 18 get_num 100,200 '調(diào)用Public類的函數(shù),不會報錯! 19 End Function Public 公有的屬性可以被其他函數(shù)調(diào)用 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim ary_1(2),max 7 ary_1(0) = 100 8 ary_1(1) = 200 9 ary_1(2) = 300 10 11 '獲取兩個值中的最大值 12 private Function get_num(num_1,num_2) '表示定義私有屬性,不能被調(diào)用! 13 pass 14 End Function 15 16 17 Public Function get_max(num_1,num_2) 18 get_num 100,200 '調(diào)用private類的函數(shù)會報錯!不要這么干喲! 19 End Function private 私有的屬性不能被其他函數(shù)調(diào)用!?
六.對象的介紹
對象:嚴(yán)格地說,對象是復(fù)雜數(shù)據(jù)和程序結(jié)構(gòu)在內(nèi)存中的表現(xiàn),只有在程序運(yùn)行時才存在。包含有方法和屬性。其實(shí)就是一種封裝的概念,它把事物封裝成一個類,然后提供類的接口,而具體的過程人們是看不到的。
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 'vbs創(chuàng)建對象概念 7 '要使用一個對象,必須先用專門的命令創(chuàng)建一個對象。在一個對象實(shí)例化時,會在內(nèi)存中生成一份那個對象的拷貝,同時會將指向該對象的指針(也被稱為引用)存放到您申明該對象的變量中。使用Set和CreateObject()函數(shù)實(shí)例化對象,并將引用存放到申明的變量中。 8 Dim objdict,objFSO,objFolder 9 Set objdict = createobject("Scripting.Dictionary") '創(chuàng)建一個對象,您也可以理解成實(shí)例化一個對象 10 11 'Set的唯一用途是實(shí)例化對象變量(存放指向該對象的引用)。 12 'CreateObject()完成的是創(chuàng)建對象的工作。使用該函數(shù),都必須將您想要實(shí)例化的對象的標(biāo)識符(prog id)傳達(dá)給它,對象的庫和類的名稱一起構(gòu)成可prog id. 13 14 'Scripting是腳本運(yùn)行時庫(一些單獨(dú)的組件)。有些庫中的某些對象只能通過庫中其他對象創(chuàng)建,FileSystemObject就是這樣一個中介類。 15 'Folder對象就是這樣一個對象。 16 17 Set objFSO = CreateObject("Scripting.FileSystemObject") 18 Set objFolder = objFSO.GetFolder("C:\Users\yinzhengjie") '注意:此處輸入的路徑必須是系統(tǒng)中存在的喲,不然你隨便輸入一個不存在的路徑打印的時候回報錯的喲!! 19 MsgBox objFolder vbs創(chuàng)建對象用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim my_phone, 7 Set my_phone = CreateObject("phone_number") 'set其實(shí)就是實(shí)例化一個類,如果不存在“phone_number”這個類的話就會報錯,所以我們在實(shí)例化的時候要看你是否已經(jīng)自定義過這個類喲 8 my_phone.email = "y1053419035@qq.com" '表示對“my_phone”定義一個“email”方法。 9 my_phone.number = "153****5200" 10 11 MsgBox my_phone.email 如何實(shí)例化自定義的類 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim myphone 7 Set myphone = Nothing '釋放內(nèi)存,不寫也是可以的,因?yàn)樵谀_本運(yùn)行結(jié)束時會自動釋放掉內(nèi)存,不過建議還是寫上喲~ 釋放內(nèi)存展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 '1.屬性: 7 ' . 的作用 8 ' 只讀 /可寫/只讀+可寫 9 10 '2.方法: 11 ' . 的作用 12 ' 與函數(shù)的使用方法類似 對象的用法?
七.WScript.Shell對象
可以用于獲取系統(tǒng)環(huán)境變量的訪問、創(chuàng)建快捷方式、訪問Windows的特殊文件夾,如Windows Desktop,以及添加或刪除注冊表?xiàng)l目。還可以使用Shell對象的功能創(chuàng)建更多的定制對話框以進(jìn)行用戶交互。?
WshShell對象有三個屬性介紹: 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 WshShell對象有三個屬性: 7 1>● CurrentDirectory; '當(dāng)前目錄路徑,是絕對路徑 8 9 2>● Environment; '獲取系統(tǒng)環(huán)境變量 10 11 3>● SpecialFolders; '獲取特殊文件夾路徑,如:桌面,system32等等WshShell對象有11個方法介紹: 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 7 WshShell對象有11個方法: 8 ● AppActivate 9 '激活窗口 10 ● CreateShortcut 11 ' 創(chuàng)建快捷方式用的 12 ● ExpandEnvironmentStrings 13 '擴(kuò)充的環(huán)境變量的字符串 14 ● LogEvent 15 ' 記錄日志事件 16 ● Popup 17 ' 與msgbox功能類似,只不過msgbox需要用戶點(diǎn)擊才能消失對話框,而這個有自動消失的功能 18 ● RegDelete 19 ' 刪除注冊表的某個鍵值 20 ● RegRead 21 ' 讀取注冊表的某個鍵值 22 ● RegWrite 23 ' 寫入注冊表的某個鍵值 24 ● Run 25 '可以運(yùn)行一個cmd的字符串 26 ● SendKeys 27 '模擬鍵盤輸入,功能相當(dāng)強(qiáng)大 28 ● Exec 29 ' 與run很類似,可以參考vbscript程序員參考手冊
?
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 7 Dim windows_shell,desktop,object_link 8 9 Set windows_shell = CreateObject("WScript.Shell") '創(chuàng)建一個對象(實(shí)例化) 10 desktop = windows_shell.SpecialFolders("Desktop") '使用SpecialFolders方法獲取桌面的路徑 11 'MsgBox desktop 12 Set object_link = windows_shell.CreateShortcut(desktop & "\yinzhengjie_cmd.lnk") '定義鏈接文件路徑并且給他起了一個名字叫“yinzhengjie_cmd”,注意以“.lnk”結(jié)尾標(biāo)志著鏈接文件喲 13 14 object_link.TargetPath = "C:\Windows\System32\cmd.exe" '源文件鏈接的絕對路徑 15 16 object_link.WorkingDirectory = "C:\Windows\System32" '源文件的工作路徑,也就是他的所在目錄(父目錄) 17 18 object_link.save '保存以上的配置,因?yàn)橐陨洗a只是將數(shù)據(jù)加入到緩存中,并沒有將數(shù)據(jù)寫入磁盤中去,所以這個步驟是必須的! 19 20 Set windows_shell = Nothing '以上代碼執(zhí)行完畢后,需要釋放掉內(nèi)存地址。 21 Set desktop = Nothing 22 Set object_link = Nothing 利用WScript.Shell對象創(chuàng)建一個cmd快捷方式 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 7 Dim windows_shell 8 9 Set windows_shell = CreateObject("WScript.Shell") '創(chuàng)建一個對象(實(shí)例化) 10 11 MsgBox "我是msgbox" '會打印"我是msgbox" ,直到你點(diǎn)擊“確定”按鈕才能走以下的代碼 12 13 windows_shell.Popup "我是popup",2 '會打印"我是popup",并在2s后退出程序。 14 15 Set windows_shell = Nothing MsgBox 與Popup 用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 7 Dim windows_shell 8 9 Set windows_shell = CreateObject("WScript.Shell") '創(chuàng)建一個對象(實(shí)例化) 10 11 12 windows_shell.Run "cmd" '運(yùn)行"cmd"命令,會彈出一個cmd對話框, 13 14 WScript.Sleep 100 '表示延時100ms(毫秒)后再執(zhí)行以下的代碼,就是讓程序睡一會,一般電腦卡可以這么干,因?yàn)橥麓蜷_多個文件會卡頓呢! 15 16 windows_shell.Run "notepad" '打開一個記事本 17 18 Set windows_shell = Nothing Run發(fā)放的應(yīng)用展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 '程序員如何表白?嘻嘻~裝逼的時刻來了,拿起鍵盤跟著哥的節(jié)奏擼起來! 7 8 Dim windows_shell 9 Set windows_shell = CreateObject("WScript.Shell") '創(chuàng)建一個對象(實(shí)例化) 10 windows_shell.Run "notepad" '打開一個記事本 11 12 WScript.Sleep 100 '表示延時100ms(毫秒)后再執(zhí)行以下的代碼,就是讓程序睡一會,一般電腦卡可以這么干,因?yàn)橥麓蜷_多個文件會卡頓呢! 13 14 windows_shell.SendKeys "I" '打開筆記本程序后,會自動輸入一個"I"的字符串進(jìn)去,下面原理一樣的,最終會呈現(xiàn)一個打開記事本呈現(xiàn)自動輸入一些字符串進(jìn)去。 15 16 WScript.Sleep 1000 '讓程序睡1000ms,也就是睡1s 17 18 windows_shell.SendKeys " " 19 WScript.Sleep 100 20 windows_shell.SendKeys "L" 21 WScript.Sleep 800 22 windows_shell.SendKeys "O" 23 WScript.Sleep 800 24 windows_shell.SendKeys "V" 25 WScript.Sleep 800 26 windows_shell.SendKeys "E" 27 WScript.Sleep 800 28 windows_shell.SendKeys " " 29 WScript.Sleep 100 30 windows_shell.SendKeys "Y" 31 WScript.Sleep 800 32 windows_shell.SendKeys "O" 33 WScript.Sleep 800 34 windows_shell.SendKeys "U" 35 WScript.Sleep 800 36 windows_shell.SendKeys " " 37 WScript.Sleep 100 38 39 Set windows_shell = Nothing 表白記事本案例展示?
八.FileSystemObject對象
FileSystemObject (FSO) 對象模型,允許對大量的屬性、方法和事件,使用較熟悉的 object.method 語法,來處理文件夾和文件。
作用: FSO 對象模型使應(yīng)用程序能創(chuàng)建、改變、移動和刪除文件夾,或探測特定的文件夾是否存在,若存在,還可以找出有關(guān)文件夾的信息,如名稱、被創(chuàng)建或最后一次修改的日期,等等。
1.文件/文件夾復(fù)制、移動、重命名
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 7 復(fù)制:Copy()、CopyFile () 、CopyFolder () 8 9 移動:Move()、MoveFile ()、MoveFolder () 10 11 重命名:object.Name [= newname]?
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 file.CopyFile "E:\裝飾器.txt","E:\python文檔\" '這個步驟是將“E:\裝飾器.txt”這個文件移動到"E:\python文檔\",一定要注意最后的“\”,不然會報錯的喲 11 12 Set file = Nothing CopyFile用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 file.MoveFile "E:\裝飾器.txt","E:\python文檔\" '這個步驟是將“E:\裝飾器.txt”這個文件移動到"E:\python文檔\",一定要注意最后的“\”,不然會報錯的喲 11 12 Set file = Nothing MoveFile用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\裝飾器.txt" 11 If file.FileExists("E:\python文檔\裝飾器.txt") Then '判斷文件"E:\python文檔\裝飾器.txt"是否存在,如果存在執(zhí)行以下代碼 12 MsgBox "文件已存在" 13 Else 14 file.MoveFile filepath,"E:\python文檔\" '如果直接移動或者復(fù)制一個文件的話,當(dāng)目標(biāo)目錄已經(jīng)存在該文件就會報錯, 15 16 End If 17 Set file = Nothing FileExists用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath,f 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\裝飾器.txt" 11 12 Set f = file.GetFile(filepath) '獲取文件的源文件絕對路徑 13 14 f.Copy("E:\python文檔\decorator.txt") '方法一,拷貝文件的時候更改文件名稱 15 16 f.Name = "decorator_note" '方法二,不用copy文件,而是直接給上面定義好的文件絕對路徑找到那個文件對象f,并給那個文件改名字。如果要改名的建議用方法二。 17 18 Set file = Nothing 19 20 Set f = Nothing 21 22 Name用法展示 GetFile修改文件名用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,folderpath,f 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 folderpath = "E:\python文檔" 11 12 Set f = file.GetFolder(folderpath) 13 14 f.Name = "python自動換運(yùn)維之路" '重命名文件夾。 15 MsgBox "已經(jīng)成功修改文件夾名稱" 16 17 Set file = Nothing 18 Set f = Nothing 19 Set folderpath = Nothing GetFolder修改文件夾名稱用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath,f 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\python自動換運(yùn)維之路\decorator.txt" 11 12 Set f = file.GetFile(filepath) '獲取文件的源文件絕對路徑 13 14 MsgBox "文件大小:" & f.Size '注意:size返回的是字節(jié)喲 15 16 Set file = Nothing 17 18 Set f = Nothing Size方法用法展示?
2.文件讀取/寫入
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 第一步:OpenTextFile() 7 或者OpenAsTextStream() 8 第二步:Read 方法 9 或者ReadAll 方法 10 或者ReadLine 方法 11 12 Write 方法 13 WriteBlankLines 方法 14 WriteLine 方法?
寫入數(shù)據(jù)到文件方法展示如下:
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath,f 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\python自動換運(yùn)維之路\生成器.exe" '定義一個文件的絕對路徑和名稱,注意:“.txt”表示文本文件,”.exe“表示被打包的二進(jìn)制文件. 11 12 Set f = file.CreateTextFile(filepath) '創(chuàng)建一個文件 13 14 MsgBox "文件創(chuàng)建成功" 15 16 Set file = Nothing 17 18 Set f = Nothing CreateTextFile創(chuàng)建文件用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath,f,i 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\python自動換運(yùn)維之路\生成器.txt" '定義一個文件的絕對路徑和名稱,注意:“.txt”表示文本文件,”.exe“表示被打包的二進(jìn)制文件. 11 12 Set f = file.CreateTextFile(filepath) '創(chuàng)建一個文件 13 MsgBox "文件創(chuàng)建成功" 14 15 For i = 1 To 10 16 f.Write i '會把數(shù)字連續(xù)寫進(jìn)去,不會自動換行。 17 Next 18 19 f.Close '關(guān)閉文件,可以將寫入的東西存入硬盤中。 20 MsgBox "文件寫入成功" 21 22 23 Set file = Nothing 24 25 Set f = Nothing Write用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath,f,i,str 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\python自動換運(yùn)維之路\生成器.txt" '定義一個文件的絕對路徑和名稱,注意:“.txt”表示文本文件,”.exe“表示被打包的二進(jìn)制文件. 11 12 Set f = file.CreateTextFile(filepath) '創(chuàng)建一個文件,注意:如果存在該文件會直接覆蓋源文件,用的時候要注意喲! 13 MsgBox "文件創(chuàng)建成功" 14 15 For i = 1 To 10 16 str = str & i & vbCrLf '其中vbCrLf是vbs內(nèi)部的換行符 17 Next 18 f.Write str '將整個字符串一次性寫入. 19 20 f.Close '關(guān)閉文件,可以將寫入的東西存入硬盤中。 21 MsgBox "文件寫入成功" 22 23 24 Set file = Nothing 25 26 Set f = Nothing Write 配合vbCrLf 用法展示,推薦這種寫法,可以提高文件的寫入效率 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath,f,i,str 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\python自動換運(yùn)維之路\生成器.txt" '定義一個文件的絕對路徑和名稱,注意:“.txt”表示文本文件,”.exe“表示被打包的二進(jìn)制文件. 11 12 Set f = file.CreateTextFile(filepath) '創(chuàng)建一個文件,注意:如果存在該文件會直接覆蓋源文件,用的時候要注意喲! 13 MsgBox "文件創(chuàng)建成功" 14 15 For i = 1 To 10 16 f.Write i 17 f.WriteBlankLines 2 '表示寫入2個回車符號,所以他的功能就是一個換行功能而已 18 Next 19 f.Write str '將整個字符串一次性寫入. 20 21 f.Close '關(guān)閉文件,可以將寫入的東西存入硬盤中。 22 MsgBox "文件寫入成功" 23 24 25 Set file = Nothing 26 27 Set f = Nothing WriteBlankLines用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,filepath,f,i 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 filepath = "E:\python自動換運(yùn)維之路\生成器.txt" '定義一個文件的絕對路徑和名稱,注意:“.txt”表示文本文件,”.exe“表示被打包的二進(jìn)制文件. 11 12 Set f = file.CreateTextFile(filepath) '創(chuàng)建一個文件 13 MsgBox "文件創(chuàng)建成功" 14 15 For i = 1 To 10 16 f.WriteLine i 17 Next 18 19 f.Close '關(guān)閉文件,可以將寫入的東西存入硬盤中。 20 MsgBox "文件寫入成功" 21 22 23 Set file = Nothing 24 25 Set f = Nothing WriteLine用法展示?
讀取文件內(nèi)容的方法展示如下:
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Const forreading = 1 '這個是openTextFile定義權(quán)限的方法,具體對應(yīng)關(guān)系請看下面介紹 7 'ForReading 1 以只讀方式打開文件。不能寫這個文件。 8 'ForWriting 2 以寫方式打開文件 9 'ForAppending 8 打開文件并從文件末尾開始寫。 10 11 12 13 Dim file,filepath,f,i,str 14 15 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 16 17 filepath = "E:\python自動換運(yùn)維之路\生成器.txt" '定義需要打開的文件,這個文件必須存在,不然會報錯喲。 18 19 Set f = file.openTextFile(filepath,forreading) '直接打開這個文件,根據(jù)上面的變量可知應(yīng)該是只讀的方式打開。當(dāng)然我們也可以判斷文件是否存在,如果存在再打開,否則提示文件不存在即可。 20 MsgBox "打開文件成功" 21 str = f.ReadAll 22 23 f.Close '關(guān)閉文件,可以將寫入的東西存入硬盤中。 24 MsgBox "點(diǎn)擊確定按鈕顯示文件內(nèi)容" 25 MsgBox str 26 27 28 Set file = Nothing 29 30 Set f = Nothing openTextFile以及ReadAll用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Const forreading = 1 '這個是openTextFile定義權(quán)限的方法,具體對應(yīng)關(guān)系請看下面介紹 7 'ForReading 1 以只讀方式打開文件。不能寫這個文件。 8 'ForWriting 2 以寫方式打開文件 9 'ForAppending 8 打開文件并從文件末尾開始寫。 10 11 12 13 Dim file,filepath,f,i,str 14 15 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 16 17 filepath = "E:\python自動換運(yùn)維之路\裝飾器.txt" '定義需要打開的文件,這個文件必須存在,不然會報錯喲。 18 19 Set f = file.openTextFile(filepath,forreading) '直接打開這個文件,根據(jù)上面的變量可知應(yīng)該是只讀的方式打開。當(dāng)然我們也可以判斷文件是否存在,如果存在再打開,否則提示文件不存在即可。 20 MsgBox "打開文件成功" 21 22 MsgBox f.Read(2) '表示從開始移動光標(biāo)2位,即讀取2個字符。 23 MsgBox f.ReadLine '表示從上次讀取的光標(biāo)位置開始讀取一整行。 24 str = f.ReadAll '表示從文件開頭開始讀取數(shù)據(jù)。 25 26 f.Close '關(guān)閉文件,可以將寫入的東西存入硬盤中。 27 MsgBox "點(diǎn)擊確定按鈕顯示文件內(nèi)容" 28 MsgBox str 29 30 31 Set file = Nothing 32 33 Set f = Nothing Read與ReadLine還有ReadAll 的區(qū)別?
3.文件夾、驅(qū)動器集合
?
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,fc,f1,f 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 Set f = file.GetFolder("E:\python自動換運(yùn)維之路\") '定義一個路徑 11 Set fc = f.Files '獲取該路徑下的所有文件,但是不包含目錄 12 13 For Each f1 In fc '表示遍歷這個fc變量 14 MsgBox f1.Name '打印fc這個變量中存放的每一個文件名稱,包括隱藏文件喲! 15 Next 16 17 18 Set file = Nothing 19 20 Set f = Nothing 21 Set fc =Nothing Files以及For Each...Next用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file,fc,f1,f 7 8 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 9 10 Set f = file.GetFolder("E:\python自動換運(yùn)維之路\") '定義一個路徑 11 Set fc = f.SubFolders '獲取該路徑下的所有文件夾,但是不包含目錄 12 13 For Each f1 In fc '表示遍歷這個fc變量 14 MsgBox f1.Name '打印fc這個變量中存放的每一個文件夾名稱,包括隱藏文件夾喲! 15 Next 16 17 18 Set file = Nothing 19 20 Set f = Nothing 21 Set fc =Nothing SubFolders用法展示?
?4.FSO實(shí)例
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Const forreading = 1 7 Const Forwriting = 2 8 Dim file,f,filepath,i,str 9 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 10 11 filepath = "E:\python自動化運(yùn)維之路\函數(shù)\decorator.txt" '定義需要問去的文件 12 Set f = file.OpenTextFile(filepath,forreading) '由于OpenTextFile只支持三種種方式打開,我們先以只讀的方式打開,相當(dāng)于python3中的“r” 13 14 While f.AtEndOfStream <> True '這里是利用“AtEndOfStream”屬性判斷文件是否到末尾,如果到末尾就會返回True.沒有到末尾就一直循環(huán)讀取每一行。 15 i = i + 1 '給變量賦初值為1,不賦值的話默認(rèn)為0 16 str = str & "第" & i & "行內(nèi)容是>>>:" & _ 17 f.ReadLine & vbCrLf '這里是一個換行符和一個回車符的應(yīng)用,將文件的內(nèi)容拼接起來。 18 Wend 19 20 f.Close '讀取文件完畢后要關(guān)閉源文件 21 MsgBox str 22 Set f = file.OpenTextFile(filepath,Forwriting) '這是是寫入的方式打開,注意打開的時候回把已經(jīng)存在的文件給清空掉,相當(dāng)于python3中的"w" 23 f.Write str '將讀取的數(shù)據(jù)重寫寫入文件中 24 f.Close 25 26 MsgBox "寫入成功" 27 28 29 Set file = Nothing 30 Set f = Nothing 31 Set filepath = Nothing 32 Set str = Nothing Forwriting以及AtEndOfStream 的用法展示(添加行號) 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Const forreading = 1 7 Const Forwriting = 2 8 Const forappending = 8 9 Dim file,f,filepath,i,str 10 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 11 12 filepath = "E:\python自動化運(yùn)維之路\函數(shù)\decorator.txt" '定義需要問去的文件 13 Set f = file.OpenTextFile(filepath,forreading) '由于OpenTextFile只支持三種種方式打開,我們先以只讀的方式打開,相當(dāng)于python3中的“r” 14 15 While f.AtEndOfStream <> True '這里是利用“AtEndOfStream”屬性判斷文件是否到末尾,如果到末尾就會返回True.沒有到末尾就一直循環(huán)讀取每一行。 16 i = i + 1 '給變量賦初值為1,不賦值的話默認(rèn)為0 17 str = str & "第" & i & "行內(nèi)容是>>>:" & _ 18 f.ReadLine & vbCrLf '這里是一個換行符和一個回車符的應(yīng)用,將文件的內(nèi)容拼接起來。 19 Wend 20 21 f.Close '讀取文件完畢后要關(guān)閉源文件 22 MsgBox str 23 Set f = file.OpenTextFile(filepath,forappending) '這是以追加的方式打開文件,相當(dāng)于python3中的“a” 24 f.Write str '將讀取的數(shù)據(jù)重寫寫入文件中 25 f.Close 26 27 MsgBox "寫入成功" 28 29 30 Set file = Nothing 31 Set f = Nothing 32 Set filepath = Nothing 33 Set str = Nothing forappending用法展示 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Const hidden = 2 'const是設(shè)置屬性的一個參數(shù),hidden=2 表示隱藏屬性,具體的可以參考以下解釋喲 7 '常數(shù) 值 描述 8 'Normal 0 普通文件。不設(shè)置屬性。 9 'ReadOnly 1 只讀文件。屬性為讀/寫。 10 'Hidden 2 隱藏文件。屬性為讀/寫。 11 'System 4 系統(tǒng)文件。屬性為讀/寫。 12 'Volume 8 磁盤驅(qū)動器卷標(biāo)。屬性為只讀。 13 'Directory 16 文件夾或目錄。屬性為只讀。 14 'Archive 32 文件在上次備份后已經(jīng)修改。屬性為讀/寫。 15 'Alias 64 鏈接或者快捷方式。屬性為只讀。 16 'Compressed 128 壓縮文件。屬性為只讀。 17 18 19 Dim file,f,filepath,i,str 20 Set file = CreateObject("Scripting.filesystemobject") '實(shí)例化 21 22 filepath = "E:\python自動化運(yùn)維之路\函數(shù)\decorator.txt" '定義需要問去的文件 23 24 Set f = file.GetFile(filepath) '獲取目標(biāo)文件,然后方便對其進(jìn)行屬性設(shè)置操作 25 26 f.Attributes = hidden 27 28 MsgBox "成功隱藏" & filepath 29 30 Set file = Nothing 31 Set f = Nothing 32 Set filepath = Nothing 33 Set str = Nothing Attributes隱藏一個文件案例展示?
?
九.小試牛刀
目前剛剛?cè)腴T,勉強(qiáng)寫了一下2個備份腳本,可惜沒有查到用vbs判斷ftp目錄下是否存在某個路徑,不然就可以將以下2個腳本的特色合二為一了。如果有哪位大神指導(dǎo),歡迎在我的博客留下珍貴的腳印,感激不盡啊~哈哈~
1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 Dim file,f1,i,j,f,soucepath,backpath,flag 6 Set file = CreateObject("Scripting.filesystemobject") 7 soucepath = "E:\python自動化運(yùn)維之路\" '定義源文件目錄 8 backpath = "E:\bakcup\" '定義將要非分的目錄 9 Set f = file.GetFolder(soucepath) 10 Set f1 = file.GetFolder(backpath) 11 For Each i In f.Files '遍歷f這個目錄 12 flag = 0 '定義一個標(biāo)志位,用于判斷是match到相應(yīng)的文件. 13 For Each j In f1.Files '遍歷f1這個目錄 14 If i.Name = j.Name Then 15 'MsgBox j.Name & "文件已存在" 16 flag = 1 ’'如果在備份的牧流中存在這個變量,就講標(biāo)志位改為1 17 Exit For 'match到后退出循環(huán) 18 End If 19 Next 20 If flag = 0 Then '如果沒有匹配到,則flag = 0,就可以執(zhí)行以下的copy 21 'MsgBox i.Name & "文件不存在" 22 file.CopyFile soucepath & i.Name,backpath '沒有文件就拷貝文件到目標(biāo)目錄中去 23 End If 24 Next 25 26 Set file = Nothing '釋放掉內(nèi)存 27 Set f = Nothing 28 Set f1 = Nothing 29 Set flag = Nothing 30 Set soucepath = Nothing 31 Set backpath = Nothing 本地文件備份腳本 1 Option Explicit 2 '@author :yinzhengjie 3 'blog:http://www.cnblogs.com/yinzhengjie/tag/VBScript/ 4 'EMAIL:y1053419035@qq.com 5 6 Dim file, WSHshell,configFile,backupFiles,objFile 7 Set file = CreateObject("Scripting.FileSystemObject") 8 set WSHshell=CreateObject("WScript.Shell") 9 Set configFile = file.opentextfile("E:\bakcup\yinzhengjie.txt",2,True) '以寫的權(quán)限打開一個文件,如果文件不存在就創(chuàng)建(因?yàn)楹竺嬷付恕癟rue”) 10 configFile.WriteLine("OPEN 172.16.96.205") '需要輸入ftp服務(wù)器的地址 11 configFile.WriteLine("yzj") 'ftp服務(wù)器的用戶 12 configFile.WriteLine("1") 'ftp服務(wù)器的密碼 13 configFile.WriteLine("binary") '表示傳輸文件用二進(jìn)制傳輸。 14 configFile.WriteLine("prompt") '表示關(guān)閉交互模式,因?yàn)槟J(rèn)是開啟交互模式的, 15 Set backupFiles = file.GetFolder("E:\bakcup\").Files '定義一個需要非 16 For Each objFile in backupFiles '遍歷objFiles目錄下的所有文件,包括隱藏文件。 17 configFile.WriteLine("mput " & objFile.Path) '上傳文件到服務(wù)器上去。 18 Next 19 configFile.WriteLine("quit") '與服務(wù)器斷開鏈接的指令。 20 configFile.Close '關(guān)閉文件。 21 WSHshell.Run "ftp -s:" & "E:\bakcup\yinzhengjie.txt", 1, true '這個是調(diào)用WSHshell.Run方法去執(zhí)行cmd的命令,以此來啟動鏈接ftp的文件。 22 Set configFile = Nothing '釋放configFile掉內(nèi)存,以下同理 23 Set WSHshell = Nothing 24 Set file = Nothing 25 26 27 28 29 ''' 30 '友情提示: 31 ' 1.根據(jù)以上備注信息修改相應(yīng)參數(shù); 32 ' 2.需要在windows周期計(jì)劃任務(wù)中添加自動執(zhí)行時間。 33 ' 3.由于是vbscript新手,歡迎大神指點(diǎn)程序需要修改的地方。百度了很久沒有找到判斷ftp目錄是否存在某個文件的方法,后期如果哪位大神找到了請?jiān)谖业牟┛透嬷?#xff0c;那樣的話我可以再優(yōu)化一下這個腳本。 34 ' 4.原鏈接地址:http://www.cnblogs.com/yinzhengjie/p/6597685.html 35 ''' 本地文件備份到ftp服務(wù)器上的腳本?
?
?
?
?
?
?
' 你已經(jīng)看到了這里,那么VBScript你就算是入門了,其實(shí),我這里舉例子僅僅都是冰山一角,FileSystemObject的用法還有很多,其功能特別強(qiáng)大,感興趣的朋友可以研究一下。想要了解更多vsscript用法請參考:http://www.cnblogs.com/yinzhengjie/p/6604253.html?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的VBScript入门篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SDK和DDK ?
- 下一篇: 20 多个国外优秀Android开源 A