Работа с дисками и папками
Объектная модель FileSystemObject (FSO) позволяет вам работать
программно с дисками и файлами так же, как вы это делаете в Проводнике Windows интерактивно.
Вы можете копировать и перемещать папки, получать информацию о дисках и папках и т.п.
Получение информации о дисках
Объект Drive позволяет вам получать информацию о дисках, имеющихся в системе.
Причём это могут быть как физические диски, так и сетевые. Их свойства позволяют получить следующую информацию:
- Общий объём диска в байтах (свойство TotalSize)
- Объём свободного места на диске в байтах (свойства AvailableSpace или FreeSpace)
- Какая буква назначена диску (свойство DriveLetter)
- Тип диска: съёмный, не съёмный, сетевой, CD-ROM или RAM-диск (свойство DriveType)
- Серийный номер диска (свойство SerialNumber)
- Тип файловой системы: FAT, FAT32, NTFS или др. (свойство FileSystem)
- Доступность диска в текущий момент (свойство IsReady)
- Сетевое имя или метка тома (свойства ShareName и VolumeName)
- Путь к корневой директории диска (свойства Path и RootFolder)
Пример использования данного объекта см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Пример использования объекта Drive
Используйте объект Drive для получения информации о диске.
Вы не увидите ссылку на актуальный объект Drive в следующем коде. Вместо этого
используется метод GetDrive для получения ссылки на существующий
объект Drive (в нашем примере это переменная drv).
Следующий пример демонстрирует использование объекта Drive в VBScript:
Sub ShowDriveInfo(drvPath)
Dim fso, drv, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set drv = fso.GetDrive(fso.GetDriveName(drvPath))
s = "Диск " & UCase(drvPath) & " - "
s = s & drv.VolumeName
s = s & ", Общий объём: " & FormatNumber(drv.TotalSize / 1024, 0)
s = s & " Kb"
s = s & ", Свободное место: " & FormatNumber(drv.FreeSpace / 1024, 0)
s = s & " Kb"
MsgBox s
End Sub
ShowDriveInfo("C:")
Работа с папками
Общие задачи по работе с папками и методы для их выполнения описаны ниже в таблице:
Задача |
Метод |
Создание папки |
FileSystemObject.CreateFolder |
Удаление папки |
Folder.Delete или FileSystemObject.DeleteFolder |
Перемещение папки |
Folder.Move или FileSystemObject.MoveFolder |
Копирование папки |
Folder.Copy или FileSystemObject.CopyFolder |
Получение имени папки |
Folder.Name |
Узнать, существует ли папка на диске |
FileSystemObject.FolderExists |
Получить экземпляр существующего объекта Folder |
FileSystemObject.GetFolder |
Получить имя родительской папки |
FileSystemObject.GetParentFolderName |
Получить путь системных папок |
FileSystemObject.GetSpecialFolder |
Пример использования данного объекта см. в разделе «3.7. Пример работы с объектом FileSystemObject».
В следующем примере показано использование объектов Folder и
FileSystemObject, где выполняется управление папками и получение информации о них:
Sub ShowFolderInfo()
Dim fso, fldr, s
' Получить экземпляр FileSystemObject.
Set fso = CreateObject("Scripting.FileSystemObject")
' Получить объект Drive.
Set fldr = fso.GetFolder("c:")
' Вывести имя родителя.
MsgBox "Имя родителя: " & fldr
' Вывести имя диска.
MsgBox "Диск " & fldr.Drive
' Вывести имя корневого каталога.
If fldr.IsRootFolder = True Then
MsgBox "Это корневой каталог"
Else
MsgBox "Это не корневой каталог"
End If
' Создать новую папку
fso.CreateFolder ("C:\Bogus")
MsgBox "Создана папка C:\Bogus"
' Основное имя папки
MsgBox "Имя папки = " & fso.GetBaseName("c:\bogus")
' Удалить созданную папку
fso.DeleteFolder ("C:\Bogus")
MsgBox "Удалена папка C:\Bogus"
End Sub