Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
90 Обычно в скрипте используются методы и свойства созданного объекта.
Метод может выполнять какие-либо действия, принимать и возвращать значения. Чаще всего нам неважно, какой именно код выполняет тот или иной метод используемого нами объекта, однако знать, как тот или иной метод можно вызвать, мы обязаны. Всего три способа:
1) простой вызов метода выглядит как
Объект.метод
При этом не возвращаются и не принимаются никакие параметры.
2) второй способ:
объект.метод параметр1 [, параметр2, ... , параметр]
Параметры передаются путем перечисления через запятую, скобки не используются.
3) третий способ:
моя_переменная = объект.метод (параметр1 [, параметр2, ... , параметрn])
В этом случае значение, которое возвращает метод, присваивается переменной. При этом применение скобок для передаваемых параметров обязательно. Даже если никакие параметры не передаются, круглые скобки все равно обязательны:
моя_переменная = объект.метод()
91 Основная функциональность скриптов реализуется через библиотеки классов. В Windows, как правило, библиотеки классов реализованы при помощи COM-технологий.
Все классы идентифицируются по ProgID (Programmatic Identifier). Информация о ProgID хранится в разделе реестра HKEY_CLASSES_ROOT и через него определяется, какой файл *.dll, *.exe и *.ocx содержит данный объект. ProgId состоит из имени библиотеки типов и имени класса. Например, при выполнении команды
Set MyObject = CreateObject(“Scripting.FileSystemObject”)
Через реестр определяется физический файл, в котором находится библиотека Scripting и класс FSO.
Скриптовые среды (в том числе WSH) работают с COM-объектами с определенными ограничениями. Одно из главных ограничений - по типам данных, которые могут передаваться COM-объектам. Поэтому из скриптов можно обращаться далеко не ко всем COM-объектам. COM-объекты, которые полностью соответствуют требованиям скриптов, называются объектами автоматизации (automation objects).
92
Запуск приложения производится при помощи объекта WScript.Shell. Первая строка для работы с этим объектом выглядит как
Dim WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
Сам запуск производится при помощи метода Run:
WshShell.Run "Имя_приложения"
Необязательные параметры: цифра (1-10) - вид диалогового окна, true/false - приостанавливать выполнение скрипта пока не завершится работа программы или нет.
93
Выполнению операций с Панелью управления, System Tray, меню Start и т.п. поможет объект Shell.Application. Этот объект представляет графическую оболочку Windows - Windows Explorer:
Dim oShell
Set oShell = CreateObject("Shell.Application")
oShell.TrayProperties()
oShell.SetTime()
Через этот объект можно также получить доступ к любому элементу панели управления:
oShell.ControlPanelItem("powercfg.cpl")
Можно выполнить команду из контекстного меню для любого файла:
Set oShell = CreateObject("Shell.Application")
Set Folder = oShell.NameSpace("C:\")
Set File = Folder.ParseName("params.txt")
File.InvokeVerb("Open")
Можно приостанавливать работу компьютера (Suspend), можно отключать ноутбуки от доковой станции и выполнять кучу других задач.
94-97
Работа с объектами файловой системы из скрипта VBScript, объектная библиотека ScriptingRuntime, объекты FileSystemObject, Drive, Folder, File, TextStream, просмотр всех каталогов на диске, запись/чтение информации из текстового файла
Основные возможности работы с объектами файловой системы через WSH реализованы при помощи класса FileSystemObject, который физически находится в библиотеке Scrrun.dll. Как правило, работа начинается с создания объекта FSO:
Dim fso1
Set fso1 = WScript.CreateObject("Scripting.FileSystemObject")
Далее используем созданный объект для выполнения различных операций.
Наиболее часто используемые возможности:
1) просмотреть/запротоколировать информацию о всех дисках на компьютере (используется свойство Drives, возвращающее набор дисков, и свойства объекта Drive):
Set oDrives = fso1.Drives
For Each i In oDrives
MsgBox ("Буква диска: " & i.DriveLetter & " Тип диска: " & i.DriveType & "Метка диска: " & i.VolumeName & " Готовность к работе: " & i.IsReady)
Next
Подробнее про объект Drive - ниже.
2) получить список всех подкаталогов данного каталога (используется свойство GetFolder и далее возможности объекта Folder):
Set oFolders = fso1.GetFolder("C:\")
Set oSubfolders = oFolders.SubFolders
For Each oFolder In oSubFolders
strListFolders = strListFolders & oFolder.Name & vbCrLf
Next
MsgBox strListFolders
3) получить информацию о физическом размере диска (свойство объекта Drive TotalSize):
Set oDrive1 = fso1.GetDrive("C")
nSize = FormatNumber (oDrive1.TotalSize,0)
MsgBox nSize
4) получить информацию о размере свободного пространства (свойства объекта Drive FreeSpace и AvailableSpace; FreeSpace выводит информацию об физическом свободном пространстве, AvailableSpace - информацию о свободном пространстве, доступном текущему пользователю - с учетом дисковой квоты)
Set oDrive1 = fso1.GetDrive("C")
nSize = FormatNumber (oDrive1.TotalSize,0)
MsgBox nSize
5) скопировать каталог со всем содержимым (используется метод CopyFolder, true означает - перезаписывать содержимое, используется по умолчанию, поэтому можно не указывать)
fso1.CopyFolder "C:\Diagnostics", "d:\Diagnostics", true
Аналогично производится перемещение и удаление папок.
6) удалить все файлы с определенным именем (например, борьба с вирусами или компьютерными игрушками). Само удаление произвести несложно: для этого используется метод DeleteFile:
fso1.DeleteFile "C:\scandisk.log", True 'true означает, что удаляем в том числе и read-only файлы
Однако обычно нужно решить еще две задачи:
o обеспечить отсутствие run-time error, если проблемы с удаление файла (файл открыт и т.п.)
o подключиться к нужному каталогу
o пройти по всем каталогам и подкаталогам, удаляя данный файл.
Каждую из этих задача удобнее решать при помощи отдельных подпроцедур. Первая решается так:
Sub FileDelete(sFile)
On Error Resume Next
Fso1.DeleteFile (sFile)
If Err.Number <> 0 Then
WScript.Echo "Error deleting file: " & sFile
End If
End Sub
Для простоты мы выводим сообщение пользователю, однако в реальной работе лучше в случае возникновения ошибки писать протокол в текстовый файл для администратора (об этом позже).
Чтобы подключиться к нужному подкаталогу:
Function GetFolder (sFolder)
On Error Resume Next
Set GetFolder = Fso1.GetFolder (sFolder)
If Err.Number <> 0 Then
WScript.Echo "Error connecting to folder: " & sFolder
WScript.Quit Err.Number
End If
End Function
Чтобы пройтись по всем подкаталогам:
Sub RunSubFolders (objFolder)
If objFolder <> "\System Volume Information" Then
MainSub objFolder
For Each iFolder in objFolder.SubFolders
RunSubFolders iFolder
Next
End If
End Sub
Проверка на System Volume Information - потому что при обращении к нему возникает ошибка.
Теперь решаем нашу задачу:
sDir = "C:"
sFile = "lines.exe"
Set objDir = GetFolder (sDir)
RunSubFolders (objDir)
Sub MainSub (objDir)
For Each eFile in objDir.Files
If LCase(eFile.Name) = LCase(sFile) Then
FileDelete eFile
End If
Next
End Sub
Конечно, в реальной работе лучше протоколировать удаление всех файлов.
7) поменять атрибуты файла (например, скрыть важные файлы ил установить для них режим read-only).
Для подключения к существующему файлу лучше всего использовать специальную подпроцедуру GetFile (аналог GetFolder в предыдущем примере):
Function GetFile(sFile)
On Error Resume Next
Set GetFile = Fso1.GetFile(sFile)
If Err.Number <> 0 Then
WScript.Echo("Error Connecting to: " & sFile
WScript.Quit Err.Number
End If
End Function
Атрибуты файла определяются как битовая маска - значение свойства Attributes. Просмотреть возможные значения можно через справку по WSH 5.6, Attributes property.
Установить проще всего так (в нашем примере устанавливаем значение Read-Only):
Set gFile = GetFile ("C:\test1.txt")
gFile.Attributes = 1
8) прочесть информацию из текстового файле
Set TxtStream = fso1.OpenTextFile("\\london1\c$\test1.txt")
Do While Not (TxtStream.atEndOfStream)
Text = Text & TxtStream.ReadLine & vbCrlf
Loop
MsgBox Tex
Большие файлы настоятельно рекомендуется открывать на чтение в окне Internet Explorer тем же методом Navigate.
9) запись / добавление информации к текстовому файлу. Эта возможность используется очень часто - например, для протоколирования хода выполнения скрипта или фиксирования результатов обследования компьютеров пользователей. В некоторых ситуациях файл можно обрабатывать дальше - например, переслать его по электронной почте средствами CDO (об этом в следующих модулях) или средствами DTS положить на сервер баз данных.
Выглядит это так:
If Fso1.FileExists ("C:\test1.txt") Then
Set txtStreamOut = fso1.OpenTextFile("C:\test1.txt",8,True)
' "2" означает "открыть на добавление", True - писать в Unicode
txtStreamOut.WriteLine "Строка 1"
txtStreamOut.WriteLine "Строка 1"
Else
Set MyFile = fso1.CreateTextFile("C:\test1.txt")
MyFile.WriteLine "Строка 1"
MyFile.WriteLine "Строка 2"
End If
Ограничения WSH при работе с файловой системой:
WSH в принципе не умеет работать с двоичными файлами - только текстовыми;
при помощи WSH нельзя настроить разрешения и аудит для файлов (это можно сделать средствами WMI).
98
Многие дополнительные возможности работы в файловой системе можно получить при помощи утилит командной строки из Resource Kit:
associate - позволяет создать ассоциацию программы с расширением имени файла;
diruse - просмотреть информацию о используемом пространстве, включая файлы и каталоги, превышающие определенный размер;
diskmap - в командой стоке просмотреть информацию о размере физического диска и его геометрии;
diskuse - показать, сколько места на диске занимают файлы каждого пользователя (по владельцам)
dupfinder - найти повторяющиеся файлы на дисках;
fcopy и robocopy - утилиты надежного копирования файлов (даже если проблемы с сетью). fcopy использует Message Queuing, robocopy - свою службу
freedisk - возвращает объем свободного пространства на диске;
mcopy/mtc (эквиваленты copy и xcopy) - копирование с созданием протокола копирования;
qgrep - аналог Unix grep, поиск строки в указанном файле (файлах)
perms - выводит разрешения для указанного файла;
showacls - тоже выводит разрешения, но уже для файла, каталога или дерева каталогов, в более удобном формате;
subinacl - позволяет выводить информацию о разрешениях на файлы (а также ключи реестра и службы) и переносить разрешения с одного пользователя на другого;
where - ищет файлы в указанном вами месте;
xcacls - позволяет менять разрешения на файлы из командной строки.
Скопировать/перенести файлы с сохранением всех разрешений (например, на новый файл-сервер) позволяет обычный FAR (или стандартная утилита Microsoft XCOPY).
99
Очень часто возникает задача создания ярлыков на компьютерах всех пользователей для какого-либо документа/папки/программы/принтера/Web (Intranet) ресурса. WSH позволяет создавать как обычные ярлыки (*.lnk), так и web - *.url.
Как это сделать: вначале нам нужно разобраться с путем, по которому будет помещен созданный нами ярлык. Видимо, нас интересует рабочий стол пользователя, но его папка лежит в профиле пользователя, а он сам - где угодно. Придется использовать специальный прием - свойство объекта WScript.Shell SpecialFolders:
set oShell = WScript.CreateObject (“WScript.Shell”)
DesktopPath = oShell.SpecialFolders(“AllUsersDesktop”)
ProgramsPath = oShell.SpecialFolders(“Programs”)
Последняя строчка относится к меню Start -> Programs.
Через вшитые в VBScript константы можно обращаться к Windows, System (System32), Temp, через WScript.Shell - Desktop, StartMenu, Startup, Programs (все - для конкретного и нескольких пользователей), Favorites, NetHood, MyDocuments, Recent, SendTo, Fonts и кучу прочих мест.
Само создание ярлыка выглядит так:
set oShell = WScript.CreateObject (“WScript.Shell”)
Set oShortCut = oShell.CreateShortcut(“MyText.lnk”)
oShortCut.TargetPath = “\\Myserver\myFolder\doc1.txt”
oShortCut.Save так будет создан в том же каталоге, где находится скрипт
Чтобы был создан на десктопе, создание скрипта производится так:
Set oShortCut = oShell.CreateShortcut(DeskTopPath & “\MyText.lnk”) и далее по тексту