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