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