1

Тема: VBScript: получение информации о количестве свободного места на дисках

Данная программа выводит единственное окно с информацией о количестве свободного места на логических жёстких дисках и сменных накопителях:

on Error resume Next 'Исключаем завершение кода скрипта в случае ошибки
stringx = "          Локальные диски" & vbNewLine  & vbNewLine
allch = vbNewLine & "          Сменные накопители" & vbNewLine  & vbNewLine
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
'Проверяем все драйвы (HDD, FDD, CDD) в системе    
For each i In fso.Drives 
    'DriveType=1 - Сменные накопители
    If i.DriveType=1 Then
        'Исключаем проверку дисковода
        If i<>"A:" Then
            'Узнаем свободное место и переводим его в Мб с точностью до 1 знака после запятой
            freef = frit(i)
            'Запоминаем в переменную данные о каждом логическом диске
            allch = allch & "  На диске " & i & " свободно " & freef & " Мб! " & vbNewLine
        End If
    End If
    'DriveType=2 - логические диски.
    If i.DriveType=2 Then
        'Узнаем свободное место и переводим его в Мб с точностью до 1 знака после запятой
        free=frit(i)
        'Запоминаем в переменную данные о каждом логическом диске
        stringx= stringx & " На диске " & i & " свободно " & free & " Мб! " & vbNewLine
    End If
Next
'Собираем всё в одну строку.
stringx = stringx & allch
'Выводим строку с накопленной информацией
WSHShell.Popup(stringx)
'После чего завершаем программу
WScript.Quit()

'Узнаем свободное место и переводим его в Мб с точностью до 1 знака после запятой
function frit(gg)
frit = FormatNumber(fso.GetDrive(gg.DriveLetter).FreeSpace/1048576, 1)
End function

В файле указан пример выполнения данной программы.

Post's attachments

info_HDD_3.6.zip 19.2 kb, 402 downloads since 2008-10-12 

You don't have the permssions to download the attachments of this post.

2

Re: VBScript: получение информации о количестве свободного места на дисках

Выкладываю обновлённую версию, добавлено:
1. После числа МБ свободного места, указана ёмкость устройства;
2. В случае, когда свободного места на диске больше чем 1024 МБ, выводится в ГБ;
3. В случае, когда сменных накопителей найдено не было, заголовок "Сменные накопители" не выводится

on Error resume Next 'Исключаем завершение кода скрипта в случае ошибки
fp = 0
fm = "  МБ"
stringx = "          Локальные диски" & vbNewLine  & vbNewLine
allch = vbNewLine & "          Сменные накопители" & vbNewLine  & vbNewLine
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set WSHShell = WScript.CreateObject("WScript.Shell")
'Проверяем все драйвы (HDD, FDD, CDD) в системе    
For each i In fso.Drives 
    'DriveType=1 - Сменные накопители
    If i.DriveType=1 Then
        'Исключаем проверку дисковода
        If i<>"A:" Then
            'Счетчик, понадобится для выявления отсутствия сменных накопителей
            fp = fp +1
            'Запоминаем в переменную данные о каждом сменном накопителе
            allch = allch & "  На диске " & i & " свободно " & frit(i) & fm & "  (Ёмкость: " & ava(i) &  fm & " )" & vbNewLine
        End If
    End If
    'DriveType=2 - логические диски.
    If i.DriveType=2 Then
        'Запоминаем в переменную данные о каждом логическом диске
        stringx= stringx & " На диске " & i & " свободно " & frit(i) & fm & "  (Ёмкость: " & ava(i) &  fm & " )" & vbNewLine
    End If
Next
'Собираем всё в одну строку  и, если сменных накопителей обнаружено не было, заголовок к ним выводить не будем
if fp>0 Then
    stringx = stringx & allch
End If
'Выводим строку с накопленной информацией
WSHShell.Popup(stringx)
'После чего завершаем программу
WScript.Quit()

'Узнаем свободное место и переводим его в Мб (а если составляется Гигабайт, то в ГБ)  с точностью до 1 знака после запятой
function frit(gg)
    frit = FormatNumber(fso.GetDrive(gg.DriveLetter).FreeSpace/1048576, 1)
    If frit>1024 Then
    frit = FormatNumber(frit/1024,1)
    fm = "  ГБ"
    Elseif frit<1024 Then
    fm = "  МБ"
    End If
End function

'Узнаем ёмкость устройства и переводим его в МБ (а если составляется Гигабайт, то в ГБ)  с точностью до 3 знаков после запятой
function ava(ogg)
ava = FormatNumber(fso.GetDrive(ogg.DriveLetter).TotalSize/1048576, 3)
    If ava>1024 Then
    ava = FormatNumber(ava/1024,1)
    fm = "   ГБ"
    Elseif frit<1024 Then
    fm = "   МБ"
    End If
End function