none
关于VBS中调用分区大小 RRS feed

  • 问题

  • 大家好,我有个关于调用分区大小并判断的问题想要请教。目前的脚本如下,我已经做了点修改


    Set objShell = CreateObject("WScript.Shell")
    Set objFS = CreateObject("Scripting.FileSystemObject")
    Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    Set colDisks = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")
    Set colPhysicalDisks = objWMIService.ExecQuery("Select * from Win32_DiskDrive")
    strTempPath = objShell.ExpandEnvironmentStrings("%TEMP%")
    strTempFile = strTempPath + "\Diskpart.txt"
    strTempFile2 = strTempPath + "\Diskpart2.txt"


    blnPhysicalDiskLower150 = False
    For Each objPhysicalDisk in colPhysicalDisks
    intSize = Int(objPhysicalDisk.Size /(1073741824))
    If intSize < 150 Then
    blnPhysicalDiskLower150 = True
    End If
    Exit For
    Next


    If blnPhysicalDiskLower150 Then
    Set objDiskpartFile = objFS.OpenTextFile(strTempFile, 2, True)
    objDiskpartFile.WriteLine "sel disk 0"
    objDiskpartFile.WriteLine "list par"
    objDiskpartFile.WriteLine "sel par 1"
    objDiskpartFile.WriteLine "del par"
    objDiskpartFile.WriteLine "cre par pri size=1024"
    objDiskpartFile.WriteLine "assign letter=r"
    objDiskpartFile.WriteLine "format FS=NTFS Label=WINRE QUICK OVERRIDE"
    objDiskpartFile.WriteLine "active"
    objDiskpartFile.WriteLine "cre par pri"
    objDiskpartFile.WriteLine "assign letter=c"
    objDiskpartFile.WriteLine "format FS=NTFS Label=SYSTEM QUICK OVERRIDE"
    objDiskpartFile.WriteLine "sel par 1"
    objDiskpartFile.WriteLine "rescan"
    objDiskpartFile.Close
    intRetVal = objShell.Run("diskpart /s " & Chr(34) & strTempfile & Chr(34), 1, true)
    Else
    Set objDiskpartFile = objFS.OpenTextFile(strTempFile, 2, True)
    objDiskpartFile.WriteLine "sel disk 0"
    objDiskpartFile.WriteLine "list par"
    objDiskpartFile.WriteLine "sel par 1"
    objDiskpartFile.WriteLine "del par"
    objDiskpartFile.WriteLine "cre par pri size=1024"
    objDiskpartFile.WriteLine "assign letter=r"
    objDiskpartFile.WriteLine "format FS=NTFS Label=WINRE QUICK OVERRIDE"
    objDiskpartFile.WriteLine "active"
    objDiskpartFile.WriteLine "cre par pri"
    objDiskpartFile.WriteLine "assign letter=c"
    objDiskpartFile.WriteLine "format FS=NTFS Label=SYSTEM QUICK OVERRIDE"
    objDiskpartFile.WriteLine "sel par 1"
    objDiskpartFile.WriteLine "rescan"
    objDiskpartFile.Close
    intRetVal = objShell.Run("diskpart /s " & Chr(34) & strTempfile & Chr(34), 1, true)
    End If
    Set objDiskpartFile2 = objFS.OpenTextFile(strTempFile2, 2, True)
    objDiskpartFile2.WriteLine "sel disk 0"
    objDiskpartFile2.WriteLine "sel par 1"
    objDiskpartFile2.WriteLine "active"
    objDiskpartFile2.Close
    intRetVal = objShell.Run("diskpart /s " & Chr(34) & strTempfile2 & Chr(34), 1, true)
    WScript.Quit 0

    目前这个脚本有个判断,是判断整个磁盘大小,如果超过150G就做第一步,如果不超过就做第二步。(见加粗的地方)
    我想修改成以下目标,不知道有高人能否给予帮助。
    把判断磁盘大小是否大于150G改为判断DISK 0 第一个分区的大小(主要是用来判断是否存在100M的隐藏分区),如果该分区小于2G,则执行第一步,否则执行第二步动作。
    这样是否可以,我VB也是刚接触,关于分区的代码定义不是很懂,有大侠给予帮助吗
    谢谢各位了。

    • 已移动 Youen Zen 2012年9月18日 7:50 Not VB issue (发件人:Visual Basic)
    2012年9月3日 14:03

全部回复