Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Работа с е файловой системой (для студентов).doc
Скачиваний:
1
Добавлен:
10.08.2019
Размер:
217.6 Кб
Скачать

Подходы к работе с файлами, применяемые на практике

Несмотря на то, что только что обсужденный подход к управлению файлами может показаться простым и достаточным для успешной работы, необходимо изучить более конструктивный подход. Иными словами, необходимо сначала определить, существует ли файл, и, если это так, то добавить в него данные, а не записывать их поверх уже имеющихся; если же файл не существует, то следует его создать. Такой подход обеспечит наличие файла журнала на каждом сервере, для которого выполняется наш сценарий.

Для проверки существования определенного файла следует использовать метод FileExists объекта FileSystemObject Хотя этот метод несколько усложняет сценарий, проверка существования и создание конкретного файла также обуславливает повышенную гибкость сценария. Не погружаясь в мысли о вышесказанном, просмотрите сценарий VerifyFileExists.vbs:

LogFile = "C:\FSO\fso.txt"

Const ForWriting = 2

Const ForAppending = 8

Set objFSO = CreateObject(“Scripting.FileSystemObject")

If objFSO.FileExists(LogFile) Then

Set objFile = objFSO.0penTextFile(LogFile, ForAppending)

objFile.Write "appending" & Now

Else

Set objFile = objFSO.CreateTextFile(LogFile)

objFile.Close

Set objFile = objFSO.OpenTextFile(LogFile, ForWriting)

objfile.Write "writing to new file" & Now

End If

objFile.Close

Обратите внимание на то, что в сценарии используется фрагмент кода, очень похожий на код сценария BasicLog.vbs, упомянутый ранее в этой главе; в нем определяется LogFile и с помощью команды CreateObject создается объект FileSystemObject. Тем не менее, на этом вся аналогия сценариев заканчивается.

В данном сценарии определяются две константы ForWriting и ForAppending, так как нам понадобится выполнить одну из этих операций, в зависимости от того, существует файл или нет. После создания FileSystemObject начинается цикл If...Then...Else. Обратите внимание на метод реализации конструкции FileExists:

If objFSO.FileExists(LogFile) Then

Для определения того, существует ли файл, используется полученная ссылка на FileSystemObject, и вызывается метод FileExists этого объекта. Единственный необходимый здесь параметр - это имя файла, существование которого нужно проверить. В данном случае, это файл, которому была присвоена переменная LogFile.

Если файл существует, то используется метод OpenTextFile объекта FileSystemObject и указывается LogFile, после чего к файлу добавляются данные с помощью константы ForAppending. Помните: при открытии файла с помощью команды OpenTextFile необходимо указать, в каком режиме открывается файл - только для чтения, для присоединения данных или для перезаписи. После указания режима открытия файла с помощью команды Write происходит запись строки в файл журнала. Функция Now лишь указывает текущую дату и время в развернутом формате.

Если файл не существует, необходимо создать файл журнала. Это делается с помощью метода CreateTextFile объекта FileSystemObject, как показано на следующем примере:

Set objFile = objFSO.CreateTextRle(LogFile)

Необходимо дополнить эту команду строкой objFile.Close, т.к. нам необходимо осуществить запись в файл. Если не закрыть файл и попытаться записать в него какие-либо данные, то произойдет ошибка «доступ закрыт», так как файл уже используется предыдущей командой. После команды Close используется команда OpenTextFile и указывается константа ForWriting. Далее с помощью команды Write происходит запись в файл. В действительности, можно было бы указать ForAppending и дополнить данными созданный файл, но при использовании ForWriting несколько проще узнать, какие данные содержатся в файле.

Подведем итоги

В этой главе вы научились использовать FileSystemObject для вывода пе­речня файлов и их создания. Вы также узнали, как использовать FileSystemObject для доступа к свойствам и атрибутам файлов. Кроме того, были рассмотрены три различных способа записи в файлы и метод проверки существования файла перед попыткой записать в него данные.

Работа с папками

В этом разделе речь пойдет о работе с папками. Основываясь на работе, проделанной в предыдущем разделе, вы сделаете следующий шаг на пути к созданию универсальных сценариев, анализирующих среду, в которой они работают, проверяющих существование файлов и папок и создающих все необходимое при отсутствии нужных объектов. По окончании этого раздела вы сможете создавать, удалять и копировать папки с помощью одного и того же сценария VBScript. Эта возможность позволяет экономить очень много времени при сетевом администрировании, так как она исключает различные проблемные ситуации.

Прежде чем начать

Для успешной работы с материалом, изложенным в этом разделе, вы должны обладать навыками, о которых шла речь в предыдущих главах:

  • Использование FileSystemObject

  • Использование конструкции For Each...Next

  • Применение констант

  • Применение конструкций Select Case

Изучив этот раздел вы будете знать, как:

  • Использовать класс FileSystemObject для создания папок

  • Использовать класс FileSystemObjec для вывода списка папок

  • Использовать класс FileSystemObjec для удаления папок

  • Использовать класс FileSystemObjecдля проверки существования папок

Операции с папками

В своей повседневной деятельности сетевому администратору приходится создавать папки сотни раз, чтобы организовать хранение тех или иных групп файлов.

Несколько простых шагов

Чтобы создать папку

  1. Создайте объект файловой системы с помощью CreateObject

  2. С помощью команды CreateFolder создайте папку.

Создание простой папки

Создание простой папки требует лишь двух строк кода. Первая строка кода создает вхождение класса FileSystemObject с помощью метода CreateObject. Необходимо присвоить ссылке, возвращаемой CreateObject, переменной, используемой, в свою очередь, для выполнения метода CreateFolder объекта FileSystemObject. Единственными элементами, необходимыми CreateFolder, являются путь и имя создаваемой папки. Этот процесс показан на примере следующего кода:

Set objFSO = CreateObjectf'Scripting.FileSystemObject"

Set objFolder = objFSO.CreateFolder("c:\fso")

Предположим, вам нужно создать несколько папок для группы временных пользователей. Вы решили назвать пользователей именами tempUserl...tempUser10. На самом деле, создание папок для этих пользователей потребует некоторого времени. Тем не менее, внеся некоторые изменения в сценарий CreateBasicFolder.vbs, вы сможете легко выполнить эту задачу. Модифицированный сценарий с именем CreateMultiF'olders.vbs выглядит следующим образом:

Option Explicit

Dim numFolders

Dim folderPath

Dim folderPrefix

Dim objFSO

Dim objFolder

Dim i

numFolders = 10

folderPath = "C:\"

folderPrefix = "TempUser"

For i = 1 To numFolders

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFolder = objFSO.CreateFolder(folderPath & folderPreFix & i)

Next

WScript.Echo(i -1 &" folders created")

В нимание! FSO не создаст папку, если не существует соответствующей родительской папки. По этой причине, попытка создать C:\tmp\tmpusers\tmpuserl при отсутствии папки C:\tmp\tmpusers будет неудачной.