欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
如何使用命令行參數和默認值?

如何使用命令行參數和默認值?

問(wèn):

嗨,Scripting Guy!我希望有個(gè)腳本可以將計算機名作為命令行參數接收,然后對這些計算機中的每臺計算機運行這個(gè)腳本。但是,如果不輸入命令行參數,我希望它默認對本地計算機運行。你們能幫我嗎?

-- TS

答:

嗨,TS。當然,我們可以幫你。我們假設您在命令行提示符處輸入以下命令來(lái)啟動(dòng)您的假想腳本:

cscript my_script.vbs atl-ws-01 atl-ws-02 atl-ws-03

這種情況下,您可能希望對以下三臺計算機運行這個(gè)腳本:atl-ws-01; atl-ws-02; and atl-ws-03. 但如果您輸入一個(gè)類(lèi)似如下所示的沒(méi)有任何命令行參數的命令,情況又會(huì )怎樣呢:

cscript my_script.vbs

這種情況下,您希望腳本說(shuō):“哦,沒(méi)有命令行參數,對吧?那好,我會(huì )對本地計算機運行。”

那么,如何做到呢?好吧,您可以通過(guò)以下代碼來(lái)實(shí)現:

If Wscript.Arguments.Count = 0 ThenarrComputers = Array(".")ElseDim arrComputers()For i = 0 to Wscript.Arguments.Count - 1Redim Preserve arrComputers(i)arrComputers(i) = Wscript.Arguments(i)NextEnd IfFor Each strComputer in arrComputersSet objWMIService = GetObject _("winmgmts:\\" & strComputer & "\root\cimv2")Set colItems = objWMIService.ExecQuery _("Select * from Win32_OperatingSystem")For Each objItem in colItemsWscript.Echo objItem.CaptionNextNext

我們稍微解釋一下這段代碼的工作原理。我們首先檢查是否輸入了命令行參數;我們通過(guò) Wscript.Arguments.Count(如您所料,這會(huì )告訴我們腳本啟動(dòng)時(shí)被提供的參數數目)來(lái)檢查這個(gè)值。假如這個(gè)值等于 0。這說(shuō)明您沒(méi)有提供命令行參數。因此,我們將數組 arrComputers 的值設為圓點(diǎn) (“.”)。為什么設為圓點(diǎn)?這是因為在 WMI 中,圓點(diǎn)表示本地計算機。

那為什么使用數組?好吧,那是因為我們想要盡可能寫(xiě)入幾行代碼。通過(guò)使用數組,我們就不需要為沒(méi)有指定命令行參數的情況編寫(xiě)一組代碼,而為指定了一個(gè)(或是兩個(gè))命令行參數的情況另外編寫(xiě)一組代碼。相反,我們只要使用 If-Then 語(yǔ)句來(lái)檢查 Wscript.Arguments.Count 的值就可以了。上面說(shuō)過(guò),如果這個(gè)值為 0(即沒(méi)有輸入命令行參數),那么我們就將 arrComputers 的值設為圓點(diǎn)。因此,我們就有了一個(gè)由單個(gè)項目組成的數組。

但如果 Count 等于 0 呢?這種情況下,我們就要獲取所有命令行參數,并將這些參數填充到 arrComputers 中。以下就是它的工作原理:

首先,我們使用以下代碼創(chuàng )建一個(gè)動(dòng)態(tài)數組:Dim arrComputers()。動(dòng)態(tài)數組就是事先不指定大小的數組;我們可以根據需要動(dòng)態(tài)增加數組的大小。通過(guò)這種方式,我們就可以不必考慮所輸出的命令行參數的個(gè)數,只要根據所有參數的數目調整數組的大小就可以了。

接下來(lái),我們創(chuàng )建一個(gè)從 0 運行到 Wscript.Arguments.Count – 1 的 For Next 循環(huán)。這看來(lái)有點(diǎn)瘋狂,但我們這么做是因為 VBScript 數組是從項目 0 開(kāi)始的。因此,最后一個(gè)項目就自然是所有項目的總數減去 1。例如,假設我們有三個(gè)項目。第一個(gè)項目是項目 0;第二個(gè)項目是項目 1;那么第三個(gè)項目就是項目 2 (3 – 1)

對于每個(gè)項目,我們使用以下代碼來(lái)重新調整數組大?。?b>Redim Preserve arrComputers(i).這會(huì )將數組大小設置為 i 的值(i 是循環(huán)變量,它告訴我們正在處理的是 Wscript.Arguments 中的哪些參數)。開(kāi)始運行循環(huán)時(shí),i 等于 0,因此我們實(shí)際上使用的是以下代碼:Redim Preserve arrComputers(0),它為我們提供了一個(gè)單元素數組。

順便說(shuō)一下,代碼中的 Preserve 部分用于確保在每次重新調整數組的維數時(shí)不會(huì )丟失所有現有數據。假設我們處在 Redim arrComputers(),這時(shí)數組大小會(huì )被重新調整,但系統將會(huì )檢測數組中原有的任何數據。

然后,我們將這個(gè)參數添加到數組中。如果我們提供 atl-ws-01 和 atl-ws-02 作為命令行參數,那么循環(huán)結束時(shí) arrComputers 將是一個(gè)具有以下兩個(gè)元素的數組:atl-ws-01 和 atl-ws-02。

剩下的就簡(jiǎn)單了。我們創(chuàng )建一個(gè)可以對數組 arrComputers 中的所有元素循環(huán)運行的 For-Each 循環(huán);我們知道,arrComputers 中可能包含一個(gè)圓點(diǎn)(表示本地計算機),也可能包含從命令行參數中獲取的計算機名列表。每次循環(huán)運行都會(huì )連接到相應的計算機并檢索 Win32_OperatingSystem 類(lèi)的 Caption 屬性。以上就是對您的問(wèn)題的全部解答!

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
VBS獲取命令行參數傳值
【重要】VBS中直接使用命令行方法
VBS中Run和Exec的區別 | Demon's Blog
VBS教程(文本版)|『 腳本技術(shù)交流 』
VBS 修改電腦配色 保護視力
windows腳本語(yǔ)言之vbs前置知識介紹
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久