Работа с файловой системой
Прежде чем начать
Для успешной работы с материалом, изложенным в этой главе, вы должны обладать навыками, о которых шла речь в предыдущих главах:
Использование конструкции For Each... Next
Применение конструкций Select Case
Использование констант
Применение внутренних свойств VBScript, таких как VbTab и Now
Применение конструкции lf...Then...Else
Изучив эту главу, вы будете знать, как:
Создавать вхождение FileSystemObject
Использовать FilesystemObject для вывода перечня файлов
Использовать FilesystemObject для создания файлов
Использовать FilesystemObject для подтверждения существования файлов
Использовать FilesystemObject для работы со свойствами файлов
Использовать FilesystemObject для работы с атрибутами файлов
Создание объекта файловой системы
Для взаимодействия с файловой системой сценарию необходимо установить с ней соединение, чтобы можно было считывать файлы и папки. Инструментом, предназначенным для этой цели в Microsoft Visual Basic Script (VBScript) является объект файловой системы. После создания вхождения объекта файловой системы его можно использовать для выполнения следующих задач:
создание файлов и папок,
копирование файлов и папок,
перемещение файлов и папок,
удаление файлов и папок,
вывод свойств файлов и папок.
Несколько простых шагов
Чтобы вывести список файлов:
С помощью CreateObject создайте FileSystemObject.
Определите папку, в которой производится поиск, с помощью GetFolder.
С помощью команды Files выведите перечень файлов.
С помощью конструкции For Each обработайте файлы, находящиеся в папке.
Работа с файлами: что к чему
В первом сценарии Listfiles.vbs, связанном с файловой системой, будет реализовано подключение к FileSystemObject, связывание объекта файловой системы с папкой, определенной переменной FolderPath, после чего с помощью команды Files и цикла For Each на экран будут выведены все файлы, содержащиеся в папке. Это лишь малая часть того, что можно сделать с помощью этого сценария. Подумайте над тем, каким образом можно расширить возможности данного сценария, чтобы можно было выполнять некоторую действительно полезную работу по администрированию.
Option Explicit
On Error Resume Next
Dim FolderPath 'folder to be searched for files
Dim objFSO
Dim objFolder
Dim colFiles
Dim objFile
FolderPath = "C:\scriptingBook\BookScripts_VbScripf”
Set objFSO = CreateObject(“Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(FolderPath)
Set colFiles = objFolder.Files
For Each objFile In colFiles
WScript.Echo objFile.Name, objFile.Size
Next
Секция заголовка
В секции заголовка файла Listfiles.vbs располагаются обычные команды Option Explicit и On Error Resume Next. Они предназначены для объявления каждой используемой переменной и обеспечения базовых функций обработки ошибок, соответственно. Далее объявляются пять переменных, используемых в сценарии. Описание переменных приведено в табл. 1.
Табл. 1. Переменные, используемые в Listfiles.vbs
-
Имя переменной
Предназначение
FolderPath
Определяет папку, в которой сценарий будет производить поиск.
objFSO
Создает FileSystemObject.
objFolder
Содержит подключение к папке с использованием переменной FolderPath и метода GetFolder объекта FileSystemObject.
colFiles
Содержит набор файлов, возвращаемых командой Files.
objFile
Содержит отдельные файлы при итерации по набору файлов посредством конструкции For Each.
Секция обращений
Секция обращений сценария Listfiles.vbs отличается от некоторых предыдущих сценариев, рассмотренных в данной книге, так как в этом сценарии происходит подключение к FileSystemObject, позволяющее работать с файлами и папками. Кроме того, определяется переменная FolderPath, объявленная в секции заголовка. Переменная FolderPath используется для упрощения модификации сценария в будущем. Посредством изменения пути, записанного в переменную FolderPath, сценарий может выводить список файлов на любом компьютере. Кроме того, FolderPath обеспечивает высокую гибкость сценария. Внеся небольшие изменения, можно адаптировать сценарий Listfiles.vbs к работе с командной строкой или к поиску значения FolderPath посредством считывания списка путей из текстового файла.
ObjFSO используется для хранения ссылки, возвращаемой командой CreateObject. С помощью команды CreateObject("Scripting.FileSystemObject") можно работать с файловой системой и создать перечень всех фалов в папке.
Папка, для файлов которой составляется перечень, определяется методом GetFolder. Строка кода objFSO.GetFoIder(FolderPath) приравнивается к objFolder, т.е. к переменной, используемой для адресации папки, определенной в переменной FolderPath.
После того как установлен контакт с папкой, с помощью команды Files формируется список файлов, находящихся в папке. Список файлов присваивается переменной colFiles с помощью следующей строки: Set colFiles = objFolder.Files. Секция обращений выглядит следующим образом:
FolderPath = "C:\scriptingBook\BookScripts_VbScripf”
Set objFSO = CreateObject(“Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(FolderPath)
Set colFiles = objFolder.Files
Рабочая секция и секция вывода информации
В рабочей секции и секции вывода информации сценария Listfiles.vbs исользуется цикл For Each...Next для обработки набора файлов, возвращаемых командой Files в секции обращений сценария. Команда WScript.Echo .-пользуется для отображения имени файла и размера файла:
For Each objFile In colFiles
WScript.Echo objFile.Name, objFile.Size Next
Свойства файла
Name и Size (используются в указанной выше команде WScriptEcho - лишь два свойства файла, которые можно отобразить с помощью FileSystemObject Свойство файла описывает такие аспекты файла как дата его создания, дата последнего доступа, дата последнего изменения, путь, размер и тип файла. Опытный сетевой администратор может выделить множество различных свойств файлов, которые можно использовать как для обеспечения безопасности, так и для управления пользовательскими данными. К примеру, как видно из следующего кода, можно добавить в сценарий Listfiles.vbs несколько строк для получения дополнительных данных; в нашем случае это дата создания и изменения файла. Константа vbTab облегчает считывание выведенных данных. Завершенный сценарий записан на приложенном к книге компакт-диске в файле ListfilesExtProperties.vbs. В сценарий были добавлены следующие строки:
WScript.Echo vbTab & "created:" & objFile.DateCreated
WScript.Echo vbTab & "modified:" & objFile.DateLastModified
Аналогичным образом можно получать информацию из других свойств файлов. В табл. 2 представлены все доступные свойства файлов.
Табл. 2. Свойства файлов
-
Свойство
Предназначение
Attributes
Представление атрибутов файлов, таких как «только чтение» и «скрытый файл», реализованное побитовым маскированием
DateCreated
Дата создания файла
DateLastAccessed
Дата последнего доступа к файлу
DateLastModified
Дата последнего изменения файла
Drive
Буква устройства с двоеточием, представляющая диск, на котором находится файл (например, С:)
Name
Имя файла, не включающее путь (например, ListFiles.vbs). В имя файла включено расширение файла
ParentFolder
Папка, в которой находится файл (не включая подпапки). К примеру, родительской папкой C:\windows\system32\logfile.txt является папка Windows
Path
Полный путь к файлу (например, C:\windows\system32\logfile.txt)
ShortName
Имя файла версии 8.3 (формат MS-DOS). Пример: MyLongFileName.txt would become MyLong~l.txt
ShortPath
Путь версии 8.3 (формат MS-DOS). Например, C:\MyLongPath\MyLongFileName.txt можно представить как C:\MyLong~l\MyLong-l.txt
Size
Размер файла в байтах
Type
Тип файла, согласно реестру. Например, файл
.doc является документом Microsoft Word