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://www.script-coding.info/WSH/RegExp.html
Дополнительные материалы на сайте http://regexp.ru/
В QTP в Object Repository для идентификации объектов можно использовать регулярные выражения.
Открываем Object Repository и выбираем свойства переменной
Открывается окно для более тонкой настройки.
Поставив галочку мы сообщаем что используются регулярные выражения. После чего в строке 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
Некоторые функции 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 рублей.