
Установка атрибутов файлов
Для установки атрибутов файлов мы будем использовать довольно необычный оператор Хоr, так как битовыми значениями в действительности являются ноль и единица, а, следовательно, для побитовой обработки необходимо выполнить простую булеву операцию. Это звучит сложно, но на самом деле все очень просто. Для использования Хоr в сценарии нужно лишь знать ее написание. В следующем сценарии происходит поиск атрибута, который, как мы выяснили выше, соответствует атрибуту «только чтение». В булевой логике «1 И 111 1» равно 1, что означает, что файл доступен только для чтения. «1 И любая другая комбинация чисел» равно нулю, поэтому если файл не помечен как доступный только для чтения, то при выполнении операции «И 1» получается нулевое значение, после чего посредством операции Хоr файлу присваивается атрибут «только для чтения».
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("C:\scripts\test.txt")
WScript.Echo "Beginning attribute is" & objfile.attributes
If (objFile.attributes AND 1) = 0 Then
objFile.Attributes = (objFile.Attributes Xor 1)
Else
WScript.Echo("File attributes are unchanged:")
End If
WScript.Echo "End File Attribute Is:" & objFile.Attributes
Файлы.
Сетевому администратору в буквальном смысле приходится создавать тысячи файлов. Как правило, эта необходимость возникает, когда нужно записать выходные данные из командной строки или из выполняющегося сценария. По окончании работы с этой главой у нас будет фрагмент кода, который можно будет использовать снова и снова. Как только вы научитесь создавать файлы, вы сможете использовать этот фрагмент кода вместо команды WScript.Echo для вывода данных либо в командную строку, либо в диалоговое окно. Итак, каким же образом создается файл? Этот процесс можно представить в виде «нескольких простых шагов».
Несколько простых шагов
Чтобы создать файл
С помощью CreateObject создайте вхождение FileSystemObject
Используйте метод CreateTextFile.
Укажите полный путь и имя нужного файла.
Как видно из этих шагов, создание текстового файла посредством VBScript - очень простая и прямолинейная операция. Действительно, создание файла может быть реализовано посредством двух строк кода, как видно на примере файла CreateTextFile.vbs.
Set objFSO = CreateObject("Scripting.nieSystemObject")
Set objFolder = objFSO.CreateTextRle("C:\FSO.txt")
Запись в текстовый файл
Создавать текстовые файлы с помощью VBScript очень удобно, но созданный файл сам по себе бесполезен, если в него не записываются какие-либо данные. Запись информации в текстовый файл - это способ сохранения информации. Кроме того, это удобный способ создания файла журнала для отслеживания выполнения различных автоматизированных задач по администрированию. Запись в текстовый файл осуществляется с помощью метода WriteLine.
Несколько простых шагов
Чтобы записать данные в текстовый файл
Создайте вхождение FileSystemObject
С помощью соответствующего параметра укажите, что требуется записывать поверх имеющегося файла (2) или добавлять данные к файлу (8).
Используйте для записи в файл метод Write, WriteLine или WriteBlankLines.
Закройте текстовый файл.
Три метода записи в файл
Существуют три метода записи данных в файлы. Их описание представлено в табл. 4.
Табл. 4. Методы записи данных в файл
Метод |
Назначение |
Write |
Запись в файл без возврата каретки. (Возврат каретки, как вы помните, это перемещение точки ввода в начало следующей строки.) |
WriteLine |
Запись в файл с возвратом каретки в конце строки. |
WriteBlankLines(n) |
Запись пустых строк в файл. Заполнитель (п) указывает число записываемых строк. |
Запись поверх файла
Для записи поверх имеющегося файла используется константа ForWriting и метод Write. Используется этот метод записи, когда требуется отследить ход выполнения операции в файле журнала. Просматривая файл, мы можем увидеть, когда операция выполнялась в последний раз (см. ниже сценарий BasicLog.vbs).
LogFile = "C:\fso\fso.txt"
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(LogFile, ForWriting)
objFile.WriteLine "beginning process" & Now
objFile.WriteLine "working on process" & Now
objFile.WriteLine "Process completed at" & Now
objFile.Close
Сценарий начинается с объявления переменной LogFile и присвоения ей текстового файла. Это делается для упрощения повторного использования кода и простоты замены файла, в который производится запись. Далее определяется константа ForWriting, которой присваивается значение 2, обуславливающее запись поверх любых данных, которые уже были ранее записаны в текстовом файле. Затем переменной objFSO присваивается объект, возвращаемый командой CreateObject, используемой для создания вхождения FileSystemObject. В следующей строке переменной objFile присваивается ссылка на получаемый LogFile. Вы используете команду OpenTextFile и указываете, что необходимо открыть файл для записи. Все предшествующие шаги предваряют операцию записи. Как только вы зафиксировали ссылку ForWriting на файл журнала, секция обращений сценария завершена. Теперь все готово для работы над секцией вывода информации, в которой и происходит все действие. В секции вывода информации используется метод WriteLine.
В случае с журналом опытный сетевой администратор ищет два фрагмента информации: завершенные операции и время их завершения. Вооружившись этой информацией, сетевой администратор может определить, была ли успешной та или иная процедура. В сценарии BasicLog.vbs можно легко выделить эту информацию, применив метод WriteLine внутри цикла For...Next любого функционирующего сценария. В файле CheckAdm.inTools_logged.vbs мы объединяем BasicLog.vbs с файлом CheckAdminTools.vbs. Этот сценарий просто выясняет, когда сценарий начинается и когда завершается. Также можно было бы добавить еще одну строку кода для вычисления времени выполнения сценария (если бы это требовалось). Обращаясь к записям журнала, можно оценить время, которое уйдет на получение нужной информации.
LogFile = "C:\fso\fso.txt
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.RleSystemObject")
Set objFile = objFSO.OpenTextFile(LogFile, ForWriting)
Set objShell = CreateObject("Shell.Appiication")
Set colTools = objShell.Namespace(47).ltems
objFile.WriteLine "beginning process" & Now
For Each objTool in colTools
WScriptEcho objTool
Next
objFile.WriteLine "Process completed at" & Now
objFile.Close