2012-08-09 108 views
1

我發現了這個簡單的腳本來輸出邏輯磁盤的大小。基本VBS幫助 - 優化VBS腳本

strComputer = "." 

Set objWMIService = GetObject("winmgmts:" _ 
    & "{impersonationLevel=impersonate}!\\" _ 
    & strComputer & "\root\cimv2") 

Set colDisks = objWMIService.ExecQuery _ 
    ("Select * from Win32_LogicalDisk") 

For Each objDisk in colDisks 
    Wscript.Echo "DeviceID: " & objDisk.DeviceID & " with a Disk Size: " & objDisk.Size 

Next 

我的VBS技能很差,我需要幫助:

  1. 我想獲得只添加了C和d分區的單一尺寸號碼一起
  2. 如果大小(從步驟1)不等於500-GB(450,000,000,000和550,000,000,000之間)我需要計算機發出警告並「按任意鍵」繼續
  3. 我不想彈出一個窗口,因爲這將要運行從WinPE的提示中,是否可以在提示窗口中獲得輸出W'

我問了很多,所以提前謝謝你,如果你能幫助

回答

1

您需要使用CSCRIPT啓動腳本。 此代碼來自http://ask.metafilter.com/79481/vbscript-printing-to-command-line 這允許回聲去命令行而不是消息框。

CheckStartMode 
strComputer = "." 

Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" _ 
& strComputer & "\root\cimv2") 

Set colDisks = objWMIService.ExecQuery _ 
("Select * from Win32_LogicalDisk") 

For Each objDisk in colDisks 
    If(objDisk.DeviceID="C:" or objDisk.DeviceID="D:") then 
     Wscript.Echo "DeviceID: " & objDisk.DeviceID & " with a Disk Size: " & objDisk.Size 
     TotalSize = CCur(TotalSize) + CCur(objDisk.Size) 
    End if 
Next 
If(TotalSize <450000000000 or TotalSize >550000000000) then 
    Wscript.Echo "Disk size of " & TotalSize & " is out of range." 
    Wscript.Echo "Press enter to contine." 
    z = WScript.StdIn.Read(1) 
End if 

Wscript.Echo "Complete, Press enter to end." 
z = WScript.StdIn.Read(1) 
Sub CheckStartMode 
    ' Returns the running executable as upper case from the last \ symbol 
    strStartExe = UCase(Mid(wscript.fullname, instrRev(wscript.fullname, "\") + 1)) 

    If Not strStartExe = "CSCRIPT.EXE" Then 
      ' This wasn't launched with cscript.exe, so relaunch using cscript.exe explicitly! 
      ' wscript.scriptfullname is the full path to the actual script 

      set   oSh = CreateObject("wscript.shell") 
      oSh.Run "cscript.exe """ & wscript.scriptfullname & """" 
      wscript.quit 

    End If 
End Sub 
+0

謝謝你的回覆!總大小應該是C + D(加在一起),然後針對(objDisk.Size <450000000000或objDisk.Size> 550000000000)進行檢查,現在它們似乎是單獨的。對不起,我在我的第一篇文章中沒有具體說明:( – ToastMan 2012-08-09 21:49:59

+0

支票爲CheckStartMode。整潔!@ToastMan,使'Like objDisk.DeviceID =「C:」然後SizeC = objDisk.Size'和'If objDisk.DeviceID =「D:」Then SizeD = objDisk.Size'。在for-each-next循環之後,添加兩個大小:'If(SizeC + SizeD)<450000000000或(SizeC + SizeD)> 550000000000然後Wscript。回聲「磁盤大小超出範圍。」 – AutomatedChaos 2012-08-10 07:35:01

+0

AutomatedChaos是正確的。我編輯了答案以反映這種變化。 – 2012-08-10 14:00:29