четверг, 6 мая 2010 г.

Лекция 2 автоматизированное тестирование


VBS – 4ч.
·         Регулярные выражения
·         Работа с регулярными выражениями в QTP
·         Определение объектов с помощью регулярных выражений
·         Создание, чтение и редактирование текстовых файлов.
·         Переименование, удаление и перенос текстовых файлов
·         Стандартные функции
Цель: Научиться работать с объектами FileSystemObject, RegExp.
VBScript
Visual Basic Scripting Edition (или просто VBScript) — это язык программирования от компании Microsoft, предназначенный для создания сценариев (скриптов). Он является подмножеством языка Visual Basic и широко используется при создании административных сценариев в системе Windows. VBScript по умолчанию поддерживается в Windows Script Host (WSH), который в свою очередь по умолчанию устанавливается вместе с почти любой версией Windows. Если у вас слишком старая версия Windows, вы можете скачать WSH с сайта Microsoft и самостоятельно установить его.
Синтаксис VBScript является несколько упрощенной версией стандартного синтаксиса Visual Basic. Например, в VBScript не поддерживается типизация: все переменные имеют тип Variant. Сценарии на языке VBScript чаще всего используются в следующих областях:
  • Автоматизация администрирования систем Windows.
  • Серверный программный код на страницах ASP в Web-приложениях.
  • Клиентские сценарии на Web-страницах (в основном только в браузере Internet Explorer).
QTP10 также поддерживает JScript

1. Создание объекта
Пример:
Set objRegExp = CreateObject("VBScript.RegExp")
Возможности регулярных выражений:
  • Сравнить текст с заданным шаблоном. Например, введённый пользователем телефонный номер должен соответствовать шаблону "8(***)***-***-**", где * - любая цифра, но не буква.
  • Заменить или удалить из введённой пользователем строки текст, соответствующий заданному шаблону.
  • Извлечь из введённой пользователем строки текст, соответствующий заданному шаблону.
Регулярное выражение - это образец текста, который состоит из обычных символов и/или специальных метасимволов.
2. Свойства
2.1. Global
Синтаксис:
Global
Возвращаемое значение: число (булево). False - проверять до первого соответствия, True - проверять по всему тексту. По умолчанию - False.
Замечание: чтение и запись.
Пример:
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "abc"
TempStr = "abc 123 abc"
MsgBox TempStr 'исходная строка
Result = objRegExp.Replace(TempStr, "def")
MsgBox Result
objRegExp.Global = True
Result = objRegExp.Replace(TempStr, "def")
MsgBox Result
2.2. IgnoreCase
Синтаксис:
IgnoreCase
Возвращаемое значение: число (булево). False - учитывать регистр символов, True - игнорировать регистр символов. По умолчанию - False.
Замечание: чтение и запись.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "АБВ"
Str = "абв 123"
MsgBox Str 'исходная строка
Res = objRegExp.Replace(Str, "где")
MsgBox Res
objRegExp.IgnoreCase = True
Res = objRegExp.Replace(Str, "где")
MsgBox Res
2.3. Pattern
Синтаксис:
Pattern
Возвращаемое значение: строка, используемая как шаблон.
Замечание: чтение и запись.
Пример:
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "абв"
Str = "абв 123"
MsgBox Str 'исходная строка
Res = objRegExp.Replace(Str, "где")
MsgBox Res
2.4. Multiline
Синтаксис:
Multiline
Возвращаемое значение: число (булево). False - однострочный объект, True - многострочный. По умолчанию - False.
Замечание: чтение и запись. Влияет на работу метасимволов ^ и $.
Пример:
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Pattern = "^абв"
Str = "абв 123 абв" & vbCrLf & "абв"
MsgBox Str 'исходная строка
Res = objRegExp.Replace(Str, "где")
MsgBox Res
objRegExp.Multiline = True
Res = objRegExp.Replace(Str, "где")
MsgBox Res
3. Методы
3.1. Replace
Синтаксис:
Replace(,)
Назначение: замена соответствующих шаблону вхождений в строке-оригинале на указанную подстроку. Возвращает (возможно) изменённую строку.
Параметры:
  • - строка-оригинал (где заменять).
  • - подстрока для замены (на что заменять).
Пример:
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "абв"
Str = "абв 123"
MsgBox Str 'исходная строка
Res = objRegExp.Replace(Str, "где")
MsgBox Res
3.2. Test
Синтаксис:
Test()
Назначение: проверка соответствия шаблону. Возвращаемое значение - булево (число).
Параметры:
  • - строка для проверки.
Пример:
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "абв+"
Str = "абввввггг"
MsgBox objRegExp.Test(Str)
Str = "аввввггг"
MsgBox objRegExp.Test(Str)
3.3. Execute
Синтаксис:
Execute()
Назначение: поиск соответствующих шаблону вхождений в строке-оригинале. Возвращает коллекцию найденных подстрок в виде агрегатного объекта.
Параметры:
  • - строка для поиска.
Пример:
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "абв+"
objRegExp.Global = True
Str = "абв 123 абв абвв 456"
Set objMatches = objRegExp.Execute(Str)
For i=0 To objMatches.Count-1
    Set objMatch = objMatches.Item(i)
    'найденное значение (подстрока)
    'индекс первого символа найденной подстроки в строке-оригинале
    'длина найденной подстроки
    MsgBox objMatch.Value & ", " & "FirstIndex=" & objMatch.FirstIndex & ", " & "Length=" & objMatch.Length
Next
4. Метасимволы
\
Показывает, что следующий символ является спецсимволом. Последовательность "\\" соответствует "\", а последовательность "\(" соответствует "(".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "^[A-Z]:\\$"
Str = "C:\"
Res = objRegExp.Test(Str)
MsgBox "строка """ & Str & """ соответствует шаблону """ & objRegExp.Pattern+""" = " & Res
^
Определяет начало входной строки. Если установлено свойство Multiline, определяет также позицию сразу после "\n" (новая строка) и "\r" (возврат каретки).
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Pattern = "^абв"
Str = "абв 123 абв" & vbCrLf & "абв"
MsgBox Str 'исходная строка
Res = objRegExp.Replace(Str, "где")
MsgBox Res
objRegExp.Multiline = True
Res = objRegExp.Replace(Str, "где")
MsgBox Res
$
Определяет конец входной строки. Если установлено свойство Multiline, определяет также позицию непосредственно перед "\n" (новая строка) и "\r" (возврат каретки).
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Pattern = "абв$"
Str = "абв 123 абв" & vbCrLf & "абв"
MsgBox Str 'исходная строка
Res = objRegExp.Replace(Str, "где")
MsgBox Res
objRegExp.Multiline = True
Res = objRegExp.Replace(Str, "где")
MsgBox Res
*
Определяет ни одного или несколько символов, стоящих перед ним. Эквивалентно {0,}.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "длинноше*"
Str = "длинношеее"
Res = objRegExp.Test(Str)
MsgBox "строка """ & Str & """ соответствует шаблону """ & objRegExp.Pattern & """ = " & Res
+
Определяет один или несколько символов, стоящих перед ним. Эквивалентно {1,}.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "длинноше+"
Str = "длинношеее"
Res = objRegExp.Test(Str)
MsgBox "строка """ & Str & """ соответствует шаблону """ & objRegExp.Pattern & """ = " & Res
?
Определяет ни одного или один символ, стоящий перед ним. Эквивалентно {0,1}. Если этот метасимвол идёт непосредственно за конструкциями (*, +, ?, {n}, {n,}, {n,m}), это приводит к некоторому изменению алгоритма поиска по заданному шаблону, что проиллюстрировано примером ниже.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "000111000"
objRegExp.Pattern = "0+"
Set objMatches = objRegExp.Execute(Str)
MsgBox "в строке """ & Str & """ найдено " & objMatches.Count & _
    " вхождений по шаблону """ & objRegExp.Pattern+""""
objRegExp.Pattern = "0+?"
Set objMatches = objRegExp.Execute(Str)
MsgBox "в строке """ & Str & """ найдено " & objMatches.Count & _
    " вхождений по шаблону """ & objRegExp.Pattern+""""
{n}
Определяет точное количество символов, стоящих перед ним. "n" - неотрицательное целое число.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "000111001110000"
objRegExp.Pattern = "0{3}"
Set objMatches = objRegExp.Execute(Str)
MsgBox "в строке """ & Str & """ найдено " & objMatches.Count & _
    " вхождений по шаблону """ & objRegExp.Pattern & """"
{n,}
Определяет минимальное количество символов, стоящих перед ним. "n" - неотрицательное целое число. "{0,}" эквивалентно "*", а "{1,}" эквивалентно "+".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "000111001110000"
objRegExp.Pattern = "0{3,}"
Set objMatches = objRegExp.Execute(Str)
MsgBox "в строке """ & Str & """ найдено " & objMatches.Count & _
    " вхождений по шаблону """ & objRegExp.Pattern & """"
{n,m}
Определяет количество символов, стоящих перед ним (от - до). "n" и "m" - неотрицательные целые числа, причём n <= m. "{0,1}" эквивалентно "?".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "00011101110000"
objRegExp.Pattern = "0{2,3}"
Set objMatches = objRegExp.Execute(Str)
MsgBox "в строке """ & Str & """ найдено " & objMatches.Count & _
    " вхождений по шаблону """ & objRegExp.Pattern & """"
.
Определяет любой символ, кроме "\n" (новая строка). Чтобы определить любой символ, включая "\n", следует использовать "[\s\S]".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "00" & vbCrLf & "00"
objRegExp.Pattern = "."
Set objMatches = objRegExp.Execute(Str)
MsgBox "в строке """ & Str & """ найдено " & objMatches.Count & _
    " вхождений по шаблону """ & objRegExp.Pattern & """"
objRegExp.Pattern = "[\s\S]"
Set objMatches = objRegExp.Execute(Str)
MsgBox "в строке """ & Str & """ найдено " & objMatches.Count & _
    " вхождений по шаблону """ & objRegExp.Pattern & """"
(шаблон)
Фиксирует подбор по шаблону в коллекции SubMatces. Чтобы определить символы "(" и ")", следует использовать "\(" и "\)".
Set objRegExp = CreateObject("VBScript.RegExp")
Str = "One = 111" & vbCrLf & "Two = 222" & vbCrLf & "Three = 333"
'прочитаем параметр "Two"
objRegExp.Pattern = "Two = (.+\r)"
Set objMatches = objRegExp.Execute(Str)
Set objMatch = objMatches.Item(0)
MsgBox Trim(objMatch.Value)
Set objSubmatches = objMatch.Submatches
For i=0 To objSubmatches.Count-1
    MsgBox Trim(objSubmatches.Item(i))
Next
(?:шаблон)
Полезно для комбинирования частей шаблона с помощью символа "|" ("или"). Например, "госпо(?:дин|жа)" короче, чем "господин|госпожа". НЕ фиксирует подбор в коллекции SubMatces.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "господин госпожа господа"
objRegExp.Pattern = "госпо(?:дин|жа)"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
(?=шаблон)
"Windows(?=95|98)" подберёт подстроку "Windows" в строке "Windows95", но не в строке "WindowsNT". Дальнейший подбор начинается немедленно, а не после символов, входящих в скобки. НЕ фиксирует подбор в коллекции SubMatces.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "WindowsWindowsWindows"
objRegExp.Pattern = "Windows(?=Win)"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
For i=0 To objMatches.Count-1
    MsgBox objMatches.Item(i).Value
Next
(?!шаблон)
"Windows(?!95|98)" подберёт подстроку "Windows" в строке "WindowsNT", но не в строке "Windows95". В остальном - полностью аналогично "(?=шаблон)".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "WindowsWindowsWindows"
objRegExp.Pattern = "Windows(?!Win)"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
For i=0 To objMatches.Count-1
    MsgBox objMatches.Item(i).Value
Next
x|y
Условие "или". "вз|перевод" подберёт "вз" и "перевод". "(вз|пере)вод" подберёт "взвод" и "перевод".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows Lindows Linux"
objRegExp.Pattern = "(Wi|Li)ndows"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
[abc]
Набор символов. Находит любой из указанных символов.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows Lindows Linux"
objRegExp.Pattern = "[WL]indows"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
[^abc]
Исключающий набор символов. Находит любой из неуказанных символов.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows Lindows Linux"
objRegExp.Pattern = "in[^uv]"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
[a-z]
Диапазон символов. Находит любой символ из диапазона.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows Lindows Linux"
objRegExp.Pattern = "[L-W]indows"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
[^a-z]
Исключающий диапазон символов. Находит любой символ, не входящий в диапазон.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows Lindows Linux"
objRegExp.Pattern = "[^A-K]indows"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\b \B
\b - Граница слова, т.е. позиция между концом слова и пробелом.
\B - НЕ граница слова.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows Windows Windows98"
objRegExp.Pattern = "ows\b"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
objRegExp.Pattern = "ows\B"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\d \D
\d - цифра. Эквивалентно [0-9].
\D - НЕ цифра. Эквивалентно
[^0-9].
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "WindowsNT Windows2000 Windows98"
objRegExp.Pattern = "Windows\d"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
objRegExp.Pattern = "Windows\D"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\w \W
\w - любой символ слова, включая символ подчёркивания. Эквивалентно [A-Za-z0-9_].
\W - обратно "\w". Эквивалентно
[^A-Za-z0-9_].
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows® Windows2000 Windows98"
objRegExp.Pattern = "Windows\w"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
objRegExp.Pattern = "Windows\W"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\s \S
\s - пробельный символ. Эквивалентно [\f\n\r\t\v].
\S - непробельный символ. Эквивалентно [^\f\n\r\t\v].
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "Windows Windows Windows98"
objRegExp.Pattern = "Windows\s"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
objRegExp.Pattern = "Windows\S"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\cx
Управляющий символ. Параметр "х" лежит в диапазоне A-Z или a-z. Например, "\cM" определяет Control-M или символ возврата каретки, "\cJ" - новая строка, "\cL" - новая страница, "\cI" - символ табуляции, "\cK" - символ вертикальной табуляции.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = vbCrLf & vbCrLf
objRegExp.Pattern = "\cM"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\f
Символ новой страницы. Эквивалент "\x0c" и "\cL".
\n
Символ новой строки. Эквивалент "\x0a" и "\cJ".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = vbCrLf
objRegExp.Pattern = "\r\n"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\r
Символ возврата каретки. Эквивалент "\x0d" и "\cM".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = vbCrLf
objRegExp.Pattern = "\r\n"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\t
Символ табуляции. Эквивалент "\x09" и "\cI".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = vbTab
objRegExp.Pattern = "\t"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\v
Символ вертикальной табуляции. Эквивалент "\x0b" и "\cK".
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = vbVerticalTab
objRegExp.Pattern = "\v"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\xn
Шестнадцатеричный ASCII-код символа. Должен содержать ровно два символа.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = vbTab
objRegExp.Pattern = "\x09"
Set objMatches = objRegExp.Execute(Str)
MsgBox objMatches.Count
\num
Ссылка на предыдущие зафиксированные (найденные) подстроки-соответствия шаблону (SubMatches). "num" - положительное целое число, номер соответствия в коллекции SubMatches; отсчёт с единицы. Например, "(.)\1" определяет два идентичных символа, следующих друг за другом.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "0:0:1-2:3:3-2:2:1-4:5:5-7:7:8"
'найдём группы, в которых две последние цифры совпадают
objRegExp.Pattern = "(\d)(:)(\d)(:)\3"
Set objMatches = objRegExp.Execute(Str)
For i=0 To objMatches.Count-1
    Set objMatch = objMatches.Item(i)
    MsgBox objMatch.Value
Next
\un
Определяет Unicode-символ по его шестнадцатеричному коду. "n" - четырёхзначный шестнадцатеричный код.
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
Str = "© Microsoft © Sun"
objRegExp.Pattern = "\u00A9 Sun"
Set objMatches = objRegExp.Execute(Str)
For i=0 To objMatches.Count-1
    Set objMatch = objMatches.Item(i)
    MsgBox objMatch.Value
Next

Дополнительные материалы на сайте http://regexp.ru/
В QTP в Object Repository для идентификации объектов можно использовать регулярные выражения.
Открываем Object Repository и выбираем свойства переменной
http://2.bp.blogspot.com/_CPEir66NSB8/S-ME9FqoKqI/AAAAAAAAADI/cgjf5zzBxgc/s400/2.png

Открывается окно для более тонкой настройки.
http://4.bp.blogspot.com/_CPEir66NSB8/S-MEatrQezI/AAAAAAAAADA/yRPR4s54Jb0/s400/1.png


Поставив галочку мы сообщаем что используются регулярные выражения. После чего в строке Constant они и прописываются. Например можно написать “Введите название.*” что будет означать любую строку начинающеюся с  «Введите название».
Ниже выбрав Parameter  мы можем указать, что значения параметра будут браться из таблицы или внешней переменной.  Значения так же могут быть регулярными выражениями.

1. Создание объекта
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
2.1. OpenTextFile
Синтаксис:
OpenTextFile(,,,)
Назначение: открывает текстовый файл и возвращает объект "TextStream", указывающий на него.
Параметры:
  • - строка, путь к файлу.
  • - необязательный, число. Возможные значения:
    • 1 - Открыть файл только для чтения.
    • 2 - Открыть файл для записи. Если файл уже существовал, его содержимое теряется.
    • 8 - Открыть файл для добавления. Если файл уже существовал, информация будет дописываться в конец файла.
  • - необязательный, булево (число). Создавать файл, если он не существует (True), или нет (False). По умолчанию - False.
  • - необязательный, число. Возможные значения:
    • -2 - Открыть файл в формате, используемом системой по умолчанию.
    • -1 - Открыть файл в формате Unicode.
    • 0 - Открыть файл в формате ASCII (по умолчанию).
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:\Test.txt", 2, True)
3. Объект File
3.1. Создание объекта
Пример №1:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\autoexec.bat")
Пример №2:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
Set File = Folder.Files("autoexec.bat")
Пример №3:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
Set File = Folder.Files.Item("autoexec.bat")
3.2. Свойства
3.2.1. Attributes
Синтаксис:
Attributes
Возвращаемое значение: число, набор флагов атрибутов файла. Флаги:
  • 0 - Normal. Обычный файл (нет атрибутов).
  • 1 - ReadOnly. Файл только для чтения. Чтение и запись.
  • 2 - Hidden. Скрытый. Чтение и запись.
  • 4 - System. Системный. Чтение и запись.
  • 8 - Volume. Диск. Только чтение.
  • 16 - Directory. Папка или файл. Только чтение.
  • 32 - Archive. Архивный. Чтение и запись.
  • 1024 - Alias. Ссылка или ярлык. Только чтение.
  • 2048 - Compressed. Сжатый. Только чтение.
Замечание: чтение и запись или только чтение, в зависимости от атрибута.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\autoexec.bat")
Attrs = File.Attributes
Set Dict = CreateObject("Scripting.Dictionary")
Dict.Add "ReadOnly", 0
Dict.Add "Hidden", 0
Dict.Add "System", 0
Dict.Add "Volume", 0
Dict.Add "Directory", 0
Dict.Add "Archive", 0
Dict.Add "Alias", 0
Dict.Add "Compressed", 0
If Attrs And 2048 Then
    Dict.Item("Compressed") = 1
End If
If Attrs And 1024 Then
    Dict.Item("Alias") = 1
End If
If Attrs And 32 Then
    Dict.Item("Archive") = 1
End If
If Attrs And 16 Then
    Dict.Item("Directory") = 1
End If
If Attrs And 8 Then
    Dict.Item("Volume") = 1
End If
If Attrs And 4 Then
    Dict.Item("System") = 1
End If
If Attrs And 2 Then
    Dict.Item("Hidden") = 1
End If
If Attrs And 1 Then
    Dict.Item("ReadOnly") = 1
End If
Str = "Атрибуты файла """ & File.Path & """:" & vbCrLf
For Each Attr In Dict
    Str = Str & Attr & " = " & Dict.Item(Attr) & vbCrLf
Next
MsgBox Str
3.2.2. DateCreated
Синтаксис:
DateCreated
Возвращаемое значение: дата создания файла.
Замечание: только чтение.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str
3.3. Методы
3.3.1. Copy
Синтаксис:
Copy(,)
Назначение: копирует файл в указанное место.
Параметры:
  • - строка, путь (куда копировать).
  • - необязательный, булево (число). Заменять файл, если он существует (True), или нет (False)
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\autoexec.bat")
File.Copy "D:\"
File.Copy "D:\Copy of autoexec.bat"
3.3.2. Move
Синтаксис:
Move()
Назначение: перемещает файл в указанное место.
Параметры:
  • - строка, путь (куда перемещать).
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\autoexec.bat")
File.Move "D:\"
'File.Move "D:\Copy of autoexec.bat"
3.3.3. Delete
Синтаксис:
Delete()
Назначение: удаляет файл.
Параметры:
  • - необязательный, булево (число). Удалять файл, если он имеет атрибут "только для чтения" (True), или нет (False).
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\Test.txt")
File.Delete
3.3.4. OpenAsTextStream
Синтаксис:
OpenAsTextStream(,)
Назначение: открывает текстовый файл и возвращает объект "TextStream", указывающий на него.
Параметры:
  • - необязательный, число. Возможные значения:
    • 1 - Открыть файл только для чтения.
    • 2 - Открыть файл для записи. Если файл уже существовал, его содержимое теряется.
    • 8 - Открыть файл для добавления. Если файл уже существовал, информация будет дописываться в конец файла.
  • - необязательный, число. Возможные значения:
    • -2 - Открыть файл в формате, используемом системой по умолчанию.
    • -1 - Открыть файл в формате Unicode.
    • 0 - Открыть файл в формате ASCII (по умолчанию).
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close
4. Объект TextStream
4.1. Создание объекта
Пример №1:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:\Test.txt")
Пример №2:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
Set TextStream = Folder.CreateTextFile("Test.txt")
Пример №3:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:\autoexec.bat")
Пример №4:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\autoexec.bat")
Set TextStream = File.OpenAsTextStream(1)
4.2. Свойства
4.2.1. AtEndOfLine
Синтаксис:
AtEndOfLine
Возвращаемое значение: содержит True, если указатель достиг конца строки и False в противном случае. Работает только если файл открыт для чтения.
Замечание: только чтение.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfLine
    Str = Str & TextStream.Read(1)
Wend
TextStream.Close
MsgBox Str
4.2.2. AtEndOfStream
Синтаксис:
AtEndOfStream
Возвращаемое значение: содержит True, если указатель достиг конца файла и False в противном случае. Работает только если файл открыт для чтения.
Замечание: только чтение.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & TextStream.ReadLine() & vbCrLf
Wend
TextStream.Close
MsgBox Str
4.2.3. Column
Синтаксис:
Column
Возвращаемое значение: содержит номер колонки текущего символа файла.
Замечание: только чтение.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfLine
    Str = Str & TextStream.Column & ": " & TextStream.Read(1) & vbCrLf
Wend
TextStream.Close
MsgBox Str
4.2.4. Line
Синтаксис:
Line
Возвращаемое значение: содержит номер текущей строки файла.
Замечание: только чтение.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & TextStream.Line & ": " & TextStream.ReadLine() & vbCrLf
Wend
TextStream.Close
MsgBox Str
4.3. Методы
4.3.1. Close
Синтаксис:
Close
Назначение: закрывает открытый файл.
Параметры: нет.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close
4.3.2. Read
Синтаксис:
Read()
Назначение: считывает из файла указанное количество символов и возвращает полученную строку.
Параметры:
  • - число, количество символов, которое нужно считать.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.Read(13)
TextStream.Close
4.3.3. ReadAll
Синтаксис:
ReadAll
Назначение: считывает весь файл и возвращает полученную строку.
Параметры: нет.
Описание: для больших файлов использование этого метода потребует больших ресурсов памяти.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close
4.3.4. ReadLine
Синтаксис:
ReadLine
Назначение: считывает строку из файла и возвращает полученную строку.
Параметры: нет.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str & TextStream.ReadLine() & vbCrLf
Wend
MsgBox Str
TextStream.Close
4.3.5. Skip
Синтаксис:
Skip()
Назначение: пропускает при чтении файла указанное количество символов.
Параметры:
  • - число, количество символов, которые нужно пропустить.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.Read(13)
TextStream.Skip 10
MsgBox TextStream.Read(10)
TextStream.Close
4.3.6. SkipLine
Синтаксис:
SkipLine
Назначение: пропускает при чтении файла строку.
Параметры: нет.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadLine()
TextStream.SkipLine
MsgBox TextStream.ReadLine()
TextStream.Close
4.3.7. Write
Синтаксис:
Write()
Назначение: записывает в файл указанную строку. Символы возврата каретки и новой строки в файл не записываются.
Параметры:
  • - строка для записи в файл.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:\Test.txt")
TextStream.Write("Text")
TextStream.Close
4.3.8. WriteLine
Синтаксис:
WriteLine()
Назначение: записывает в файл указанную строку. В файл записываются символы возврата каретки и новой строки.
Параметры:
  • - необязательный, строка для записи в файл. Если опущен, в файл записывается пустая строка.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:\Test.txt")
TextStream.WriteLine "Text"
TextStream.Close
4.3.9. WriteBlankLines
Синтаксис:
WriteBlankLines()
Назначение: записывает в файл указанное количество пустых строк (символы возврата каретки и новой строки).
Параметры:
  • - число, количество пустых строк, которое надо записать.
Пример:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:\Test.txt")
TextStream.WriteBlankLines 5
TextStream.Close

Дополнительная информация на http://www.script-coding.info/WSH/FileSystemObject.html

Некоторые функции VBS

Математические функции
Функция
Описание
Abs(x)
Возвращает абсолютное значение числа x.
Int(x)
Возвращает целую часть числа x. Если х - отрицательное число, функция вернёт ближайшее целое число, меньшее, чем х.
Fix(x)
Возвращает целую часть числа x. Если х - отрицательное число, функция вернёт ближайшее целое число, большее, чем х.
Sgn(x)
Знаковая функция числа x. Возвращает 1 для чисел больше нуля, 0 для нуля и -1 для чисел меньше нуля.
Round(x, [numdecimal])
Возвращает результат округления числа x с точностью до numdecimal знаков после запятой.
Rnd([x])
Возвращает случайное число от 0 до 1. Необязательный аргумент является начальным значением для генерации случайных чисел.

Строковые функции
Функция
Описание
Asc(str)
Возвращает ASCII-код первого символа в строке str.
Chr(code)
Возвращает символ с ASCII-кодом code.
InStr([start,] str1, str2[, compare])
Возвращает индекс символа, с которого начинается первое вхождение подстроки str2 в строку str1. Параметр start задаёт номер символа, с которого следует начинать поиск (если не задан, то с начала строки). Поиск производится слева направо. Параметр compare задаёт режим сравнения при обработке строк (0 - двоичное сравнение, 1 - текстовое сравнение).
LCase(str)
Возвращает строку, в которой все символы преобразованы к нижнему регистру.
UCase(str)
Возвращает строку, в которой все символы преобразованы к верхнему регистру.
Left(str, len)
Возвращает len символов с начала строки str.
Right(str, len)
Возвращает len символов с конца строки str.
Mid(str, start[, len]))
Возвращает из строки str подстроку, которая начинается с позиции start и имеет длину len. Если параметр len не указан, возвращаются все символы до конца строки.
Len(str)
Возвращает число символов в строке str.
LTrim(str)
Возвращает строку, в которой удалены все начальные пробелы.
RTrim(str)
Возвращает строку, в которой удалены все конечные пробелы.
Trim(str)
Возвращает строку, в которой удалены все начальные и конечные пробелы.
Replace(expr, find, replacewith[, start[, count[, compare]]])
Возвращает строку, которая получается из строки expr путём замен входящих в неё подстрок find на подстроки replacewith. Параметр start определяет начальную позицию поиска. Параметр count определяет число замен (по умолчанию - все). Параметр compare задаёт режим сравнения при обработке строк (0 - двоичное сравнение, 1 - текстовое сравнение).
StrComp(str1, str2[, compare])
Сравнивает строки. Если str1str2, возвращается 1. Параметр compare задаёт режим сравнения при обработке строк (0 - двоичное сравнение, 1 - текстовое сравнение).

Функции для работы с датой и временем
Функция
Описание
Date
Возвращает текущую системную дату.
Now
Возвращает текущие системные дату и время в виде, соответствующем региональным настройкам Windows.
Time
Возвращает текущее системное время.
Timer
Возвращает количество секунд, прошедших с полуночи.
Year(date)
Выделяет год из даты, заданной параметром date, и возвращает это целое число.
Month(date)
Выделяет номер месяца из даты, заданной параметром date, и возвращает целое число от 1 до 12.
Day(date)
Выделяет номер дня месяца из даты, заданной параметром date, и возвращает целое число от 1 до 31.
Weekday(date[, firstdayofweek])
Возвращает целое число - день недели для даты, заданной параметром date. Параметр firstdayofweek - константа, показывающая, какой из дней недели считать первым.
Hour(time)
Выделяет номер часа из даты или момента времени, заданных параметром time, и возвращает целое число от 0 до 23.
Minute(time)
Выделяет количество минут из даты или момента времени, заданных параметром time, и возвращает целое число от 0 до 59.

Прочие функции
Функция
Описание
Array(arglist)
Возвращает массив, составленный из элементов списка arglist. Элементы в списке arglist должны быть отделены друг от друга запятыми.
IsArray(varname)
Возвращает true, если параметр varname является массивом, и false в противном случае.
MsgBox(prompt[, buttons][, title][, helpfile, context])
Выводит на экран диалоговое окно с сообщением и различными кнопками и возвращает результат нажатия на одну из кнопок. Возможные варианты возврата - см. описание констант нажатий на кнопки в разделе "Константы для диалоговых окон". Параметр prompt задаёт текст сообщения. Числовой параметр buttons определяет состав кнопок, значок, кнопку по умолчанию и режим модальности окна - см. описание констант в разделе "Константы для диалоговых окон" (значения необходимых констант для передачи в параметр buttons нужно просто сложить). Параметр title задаёт текст заголовка диалогового окна. Параметр helpfile задаёт путь к файлу помощи. Параметр context задаёт идентификатор содержания помощи.
InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])
Выводит на экран диалоговое окно со полем ввода и кнопками ОК, Отмена и возвращает введённую в этом окне символьную строку. Параметр prompt задаёт текст сообщения, которое выводится рядом с полем ввода. Параметр title задаёт текст заголовка диалогового окна. Параметр default задаёт значение по умолчанию для поля ввода. Параметры xpos и ypos определяют координаты левого верхнего угла окна. Параметр helpfile задаёт путь к файлу помощи. Параметр context задаёт идентификатор содержания помощи.
CreateObject(servername.typename[, location])
Создаёт экземпляр объекта автоматизации и возвращает ссылку на него. Здесь servername - имя приложения, являющегося сервером автоматизации, typename - тип или класс создаваемого объекта, location - сетевое имя компьютера, на котором будет создан объект.
GetObject([pathname][, classname])
Возвращает ссылку на объект класса classname, который хранится в отдельном файле, путь к которому задаётся параметром pathname.
CBool(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных boolean (true или false). Например, CBool(3=2) или CBool("-1").
CByte(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных byte (целое число от 0 до 255). Например, CByte(256) вызовет ошибку переполнения.
CCur(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных currency (специальный числовой формат для денежных величин).
CDate(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных date/time (даты от 1 января 100 года до 31 декабря 9999 года).
CDbl(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных double (числа с плавающей точкой двойной точности).
CInt(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных integer (целые числа в диапазоне от -32768 до 32768).
CLng(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных long (целые числа в диапазоне от -2 147 483 648 до 2 147 483 647).
CSng(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных single (числа с плавающей точкой одинарной точности).
CStr(expr)
Возвращает значение, полученное в результате преобразования выражения expr к подтипу данных string.
Eval(expr)
Вычисляет выражение и возвращает результат. Например, Eval(3=2).
RGB(red, green, blue)
Возвращает целочисленное значение, соответствующее цвету RGB, заданному с помощью трёх составляющих - красного, зелёного и синего цветов числами от 0 до 255.

Результат: Сформированный отчет.
Задание: Зайти на тестовые аккаунты(скажем есть несколько в sape) проверить баланс, разлогиниться. Записать данные по наименьшему балансу в файл указав текущие дату и время. Название файла Balanstest.txt В файле Criticbalanse.txt записать аккаунты у которых баланс меньше 20 рублей.

1 комментарий:

  1. Отличная статья - "лекция". Так держать Sting.sk!

    P.S. Хочу лекцию про методы создания "уникальных" текстов (с определённым смыслом и тематикой). Если сам не напишешь, то её напишу я после 11 июня 2010 года.

    ОтветитьУдалить