欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Some tips of wmi scripting in jscript (1)

 更新時(shí)間:2007年04月03日 00:00:00   作者:  
集合的概念在windows腳本中很常用,尤其是在wmi方面的腳本中基本都會(huì)遇到集合操作。
在vbscript里遍歷集合的方法很簡(jiǎn)單,F(xiàn)or Each循環(huán)就可以達(dá)到目的。但是在jscript中
如何使用集合,卻困擾了我很長(zhǎng)時(shí)間,連msdn中都找不到好的例子,令我一度悲觀的認(rèn)為
jscript不能進(jìn)行集合操作。

在我?guī)缀蹩煲艞壍臅r(shí)候,又翻出一本vbscript wmi的電子書看了看,竟然找到了jscript
使用集合的方法,那就是Enumerator對(duì)象,該對(duì)象專門用作枚舉集合??吹竭@個(gè)對(duì)象你會(huì)
想到什么?是不是覺得很眼熟?如果你用jscript調(diào)用過FSO的話,如何枚舉Drives Files
和Folders的?FSO的例子里寫的明明白白,當(dāng)時(shí)使用的時(shí)候是否行尸走肉般的把例子搬到
你的程序里?當(dāng)時(shí)也會(huì)覺得奇怪它為什么遍歷一個(gè)集合要寫這么麻煩,可是就是沒有深究
為什么要這樣寫,那時(shí)因?yàn)槟銓?duì)數(shù)組的那套行不通,jscript中遍歷集合只能如此。

這時(shí)候你可能還是有疑問,集合和數(shù)組有什么差別?引用MS腳本幫助里的原話:集合與數(shù)
組的不同點(diǎn)在于集合的成員不能直接訪問。不像處理數(shù)組時(shí)使用下標(biāo),這只能將當(dāng)前項(xiàng)目
指針移動(dòng)到集合下一或前一元素。這里你想的深入一點(diǎn),可以這樣理解,數(shù)組就相當(dāng)于c
語言中的數(shù)組概念,是線性存儲(chǔ)空間,可以通過下標(biāo)很方便的訪問,而集合則是一種復(fù)雜
的數(shù)據(jù)結(jié)構(gòu),比如是一個(gè)鏈表,你訪問的話只能通過結(jié)點(diǎn)之間的指向關(guān)系來訪問前一個(gè)或
者后一個(gè)元素。

Enumerator的用法很簡(jiǎn)單,把你要遍歷集合作為參數(shù)傳遞給Enumerator對(duì)象的構(gòu)造函數(shù)后,
你可以枚舉集合的成員,atEnd方法判斷是否已經(jīng)到結(jié)尾,moveFirst方法可以把指針移動(dòng)
到第一個(gè)元素,moveNext方法把當(dāng)前的指針位置移動(dòng)到下一個(gè)元素,通過item方法返回集
合中的單個(gè)元素。

例1:枚舉所有的驅(qū)動(dòng)器


/**//*
* cscript ListDrive.js
*/
var oFSO = new ActiveXObject("Scripting.FileSystemObject");
var enDrives = new Enumerator(oFSO.Drives);
var oDrive;
while (! enDrives.atEnd()) {
    oDrive = enDrives.item();

    if (oDrive.IsReady) {
        WScript.Echo(oDrive.DriveLetter + ":");
    }

    enDrives.moveNext();
}
例2:通過wmi枚舉所有的進(jìn)程


/**//*
* cscript ListProcess.js
*/
var sComputerName = ".";
var oLoc = new ActiveXObject("WbemScripting.SWbemLocator");
var oSvc = oLoc.ConnectServer(sComputerName, "root\\cimv2");
var colItems = oSvc.ExecQuery("SELECT * FROM Win32_Process");
var enProcesses = new Enumerator(colItems);

while (! enProcesses.atEnd()) {
    WScript.Echo(enProcesses.item().Name);
    enProcesses.moveNext();
}

前幾天還和Long同學(xué)討論vbscript和jscript之間的優(yōu)劣,vbscript在語言功能和代碼風(fēng)
格上比jscript要差很多,但是jscript也有些功能實(shí)現(xiàn)上的缺憾,比如沒有辦法進(jìn)行字節(jié)
操作,但是總的來說jscript是一個(gè)聰明的語言,從Enumerator就可以看出這一點(diǎn),赫赫。

相關(guān)文章

  • layui按條件隱藏表格列的實(shí)例

    layui按條件隱藏表格列的實(shí)例

    今天小編就為大家分享一篇layui按條件隱藏表格列的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • JS實(shí)現(xiàn)鼠標(biāo)滑過鏈接改變網(wǎng)頁背景顏色的方法

    JS實(shí)現(xiàn)鼠標(biāo)滑過鏈接改變網(wǎng)頁背景顏色的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)鼠標(biāo)滑過鏈接改變網(wǎng)頁背景顏色的方法,涉及js響應(yīng)鼠標(biāo)事件動(dòng)態(tài)修改頁面元素屬性的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • JavaScript中的return語句簡(jiǎn)單介紹

    JavaScript中的return語句簡(jiǎn)單介紹

    return語句在js中起到舉足輕重的作用,該關(guān)鍵字不僅具有返回函數(shù)值得功能,還具有一些特殊的用法,有個(gè)清晰的把握是非常有必要的,下面通過本篇文章給大家簡(jiǎn)單介紹下return語句的作用
    2015-12-12
  • javascript?中動(dòng)畫制作方法?animate()屬性

    javascript?中動(dòng)畫制作方法?animate()屬性

    這篇文章主要介紹了javascript?中動(dòng)畫制作方法?animate()屬性,animate是所有dom元素都有的方法,可以用來最做過度動(dòng)畫,關(guān)鍵幀動(dòng)畫,下面文章的相關(guān)介紹需要的小伙伴可以參考一下
    2022-04-04
  • 淺談Javascript實(shí)現(xiàn)繼承的方法

    淺談Javascript實(shí)現(xiàn)繼承的方法

    本文給大家簡(jiǎn)單介紹了下如何在javascript中實(shí)現(xiàn)繼承的幾種方法,十分的實(shí)用,有需要的小伙伴可以參考下。
    2015-07-07
  • 快速解決bootstrap下拉菜單無法隱藏的問題

    快速解決bootstrap下拉菜單無法隱藏的問題

    今天小編就為大家分享一篇快速解決bootstrap下拉菜單無法隱藏的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • ClearTimeout消除閃動(dòng)實(shí)例代碼

    ClearTimeout消除閃動(dòng)實(shí)例代碼

    本文給大家介紹ClearTimeout消除閃動(dòng)相關(guān)知識(shí),本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • ajax前臺(tái)后臺(tái)跨域請(qǐng)求處理方式

    ajax前臺(tái)后臺(tái)跨域請(qǐng)求處理方式

    本篇文章通過前臺(tái)跨域請(qǐng)求處理以及后臺(tái)跨域的數(shù)據(jù)處理方式介紹,詳細(xì)分析了ajax跨域的問題,對(duì)此有需要的朋友學(xué)習(xí)下。
    2018-02-02
  • webpack 處理CSS資源的實(shí)現(xiàn)

    webpack 處理CSS資源的實(shí)現(xiàn)

    這篇文章主要介紹了webpack 處理CSS資源的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論