Vbs скрипты для чайников: Пишем программы (скрипты) в Блокноте Windows
Уроки VBScript | VBHack — Part 2
В этой статье я расскажу вам про математические функции языка Visual Basic Script, а так же про функции для работы с числами. Данные функции полезны при математических вычислениях: нахождении синуса или косинуса и т.п.. Так же они позволяют получить случайное число. Давайте рассмотрим их подробней.
(далее…)
11 августа, 2015
Уроки VBScript
2 комментария
Date, DateAdd, DateDiff, DatePart, DateValue, FormatDateTime, Hour, Minute, Month, MonthName, Time, Timer, TimeSerial, TimeValue, vbs, VBScript, Weekday, WeekdayName, Year, урок, Функции
В этом уроке мы пройдём все функции VBScript для работы с датой и временем. Данные функции VBS дают нам возможность получить текущую дату и время, временные промежутки, создавать таймеры и многое другое, что не оставит Вас равнодушными.
(далее…)
Вот мы и подобрались вплотную к циклам For … Next и For Each … Next. Как и все циклы, они нужны для выполнения сценария определённое количество раз. Например можно получить список всех папок в любой папке или файлов в этой папке. Без этого не обойтись. Я считаю этот урок обязательным для прочтения! Думаю это будет интересно.
(далее…)
24 июля, 2015
Уроки VBScript
2 комментария
Array, End Function, Erase, Function, IsArray, LBound, Preserve, ReDim, UBound, VBScript, массивы
В этой статья я расскажу про массивы языка VBScript и про функции для работы с ними. Массивы бывают одномерными и многомерными. Они будут очень полезны нам в будущем, и если с ними сразу разобраться, то никаких проблем в следующих уроках у Вас не возникнет.
(далее…)
Приветствую всех читателей своего блога. Сегодня мы будем изучать циклы While … Wend и Do … Loop. При создании сценария VBScript они вам обязательно понадобятся. Эти два цикла позволяют выполнять одно и то же выражение множество раз, пока условие истина (True) или ложь (False).
(далее…)
В данном уроке речь пойдёт о функции Function … End Function — подпрограммы, которая возвращает определённое значение и о процедуре Sub … End Sub — подпрограмме, которая ничего не возвращает. Парой они могут оказаться просто жизненно необходимыми при решение некоторых задач в сценариях VBScript.
(далее…)
Вот мы и добрались до второго урока по VBScript (vbs). В этом уроке я расскажу про условный оператор if … else а так же про оператор выбора select … case. Это два очень полезных оператора без которых почти не обойтись при создании сценария vbs. Они позволяют выполнять определённые выражения при соблюдении определённого условия.
(далее…)
Приветствую тебя, читатель моего блога. Я начинаю свою серию уроков по программированию VBScript этой ознакомительной статьёй. Вам предстоит узнать основы основ данного языка программирования.
VBScript — Это скриптовый язык программирования. Как и любой другой скриптовый язык VBScript урезан в своих возможностях. Но то, что он урезан ещё не говорит что он не интересен.
(далее…)
Основы программирования в Microsoft Visual Basic Scripting
В данной статье поговорим о VBScript. Рассмотрим следующие вопросы: — что такое VBScript?; — кому это нужно и для чего?; — пример программ на VBScript; — сравнение VBScript и JavaScript.
Википедия говорит, что VBScript (Visual Basic Scripting Edition) – это скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Он широко используется при создании скриптов в операционных системах семейства Microsoft Windows. Если сказать немного проще, то VBScript – это файл с расширением vbs, который Windows воспринимается как набор инструкций. Формат этого файла – текст (*.txt). В общем, открываешь «Блокнот» и программируешь в свое удовольствие. Но может возникнуть вопрос: А кто (или что?) это все выполняет? — Ответ: сервер сценариев Windows, который ставится или обновляется вместе с Windows или с Internet Explorer.
Рассмотрим следующий вопрос, кому и для чего нужен VBScript? Ответ прост: на мой взгляд, это идеальная платформа для создания простых приложений для рутинных задач быстро и просто. Например, при каждой загрузке необходимо удалять какую-либо папку или файл, пожалуйста. Кроме этого, применяются в следующих областях, использующих продукцию Microsoft:
— автоматизация администрирования систем Windows;
— серверный программный код в страницах ASP;
— клиентские скрипты в браузере Internet Explorer.
В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данными и прочих сложных задач.
Как вариант удобен для вирусописателя, как ни подло это звучит. Только при написании вирусов компиляция практически обязательна. Один из самых громких вирусов, I love you, был написан именно на VBScript, в общем, есть куда расти.
Для того, что бы программировать в среде VBScript, без компилятора, вам понадобится Notepad++, в блокноте проще, но лучше когда подсвечивается синтаксис, а также Internet Explorer, так как 80% функционала идет в комплекте с браузером. Для того, что бы программировать с компилятором, нужно установить Visual Basic Scripting Edition. VBS может запускаться в виде текстового файла, или компилированного текстового файла. В отличие от текстового файла, в котором будут видны команды, их можно редактировать, компилированный текстовый файл прочитать не удастся (сплошные крякозябры).
Скажем пару слов о спецификации. Описание всего, что поддерживает VBScript, займет много места. В принципе, не бойтесь экспериментировать, пишите код также, как и в VB, если что-то не пойдет, Вы об этом узнаете.
— Переменные:
Все переменные здесь только Variant (может содержать данные любого типа.). Переменные задаются следующим образом:
Dim x – то, что хранит переменная VBScript сам разберется.
— Функции: Все функции Visual Basic.
— Константы:
Также как и в VB, константа вызывается, например так: vbNo.
Самая, на мой взгляд, приятная фича заключается в работе с FileSystemObject. Позволяет работать с файловой системой компьютера (удалять папки, писать в файлы и т.д.).
Теперь приведу пару примеров роботы с VBScript.
Напишем программу, которая будет суммировать два числа.
Для начала, создадим файл с именем sum.vbs в него запишем следующее:
Dim a,b,c ‘переменные для чисел
a = inputbox («Введите первое число»)
b = inputbox («Введите второе число»)
c = cint(a) + cint(b) ‘суммируем
msgbox («Результат: » & c) ‘вывод результата
Сохраняем, запускаем, получаем следующее (рисунок анимированный):
На первый взгляд все понятно, кроме одного: cint. Так как все переменные у нас Variant, а inputbox возвращает только строку как результат, то строка c = a + b будет интерпретирована как сложение двух строк, а не чисел, при вводе чисел 1 и 2 результат будет 12. Использование функции cint возвращает значение типа Integer, после этого складывает числа.
Рассмотрим программу для работы с файловой системой. Создаем файл FileSystem.vbs и запишем в него:
Dim fso, FolderName, FileName ‘переменные
‘создаем объект FileSystemObject в переменную fso
Set fso = CreateObject(«Scripting.FileSystemObject»)
FolderName = InputBox(«Имя папки?») ‘имя папки
FileName = InputBox(«Имя файла для создания?») ‘имя файла
fso.CreateFolder («c:\» & FolderName) ‘создадим папку
MsgBox «Создана папка: » & FolderName ‘сообщим пользователю
fso.CreateTextFile («c:\» & FolderName & «\» & FileName) ‘создадим файл
MsgBox «Создан файл: » & FileName ‘сообщим пользователю
Сохраняем, запускаем, получаем следующее (рисунок анимированный):
Теперь объясню более внятно. Во второй строке мы создали объект FileSystemObject в переменной fso. Потом вызвали метод CreateFolder для создания папки, указав в качестве аргумента путь к папке. Потом вызвали метод CreateTextFile для создания файла.
Теперь наполним текстовый файл информацией:
Dim fso, Text, FolderName, FileName ‘переменные
‘создаем объект FileSystemObject в переменную fso
Set fso = CreateObject(«Scripting.FileSystemObject»)
FolderName = InputBox(«Имя папки?») ‘имя папки
FileName = InputBox(«Имя файла для создания?») ‘имя файла
fso.CreateFolder («c:\» & FolderName) ‘создадим папку
MsgBox «Создана папка: » & FolderName ‘сообщим пользователю
Set Text = fso.CreateTextFile («c:\» & FolderName & «\» & FileName) ‘создадим файл
MsgBox «Создан файл: » & FileName ‘сообщим пользователю
Text.Write «Это»
Text.WriteLine » статья о VBScript»
Text.WriteBlankLines 2
Text.WriteLine «специально для ibm.at.ua»
Text.Close
Думаю, тут все понятно. Объяснять не будем.
Рассмотрим вариант программы посложнее. Нужно узнать спецификацию своего компьютера, то есть полные данные компьютера, которые будут собраны в один файл.
Создадим файл spec_report.vbs, в который запишем следующее:
[spoiler=Код программы:]
Const SILENT = False ‘тихий режим отключен, будет запрошено имя компьютера
‘Const SILENT = True ‘режим отчета о локальном компьютере без вывода диалогов
‘где сохранять отчет
Const DATA_DIR = «comp\» ‘локальный каталог + «\» в конце
‘Const DATA_DIR = «\\SRV\Invent\comp\» ‘сетевой ресурс + «\» в конце
‘прочее
Const TITLE = «Спецификация компьютера» ‘заголовок диалоговых окон
Const DATA_EXT = «.csv» ‘расширение файла отчета
Const HEAD_LINE = True ‘выводить заголовки в первой строке CSV-файла
‘не завершать скрипт аварийно
‘закомментировать на время отладки
On Error Resume Next
‘== ВЫПОЛНЕНИЕ
‘объект для доступа к файловой системе
Dim fso
Set fso = CreateObject(«Scripting.FileSystemObject»)
‘объект WMI
Dim wmio
‘файл отчета
Dim tf
‘узнать имя локального компьютера
Dim nwo, comp
Set nwo = CreateObject(«WScript.Network»)
comp = LCase(nwo.ComputerName)
‘запросить имя удаленного компьютера
If Not SILENT Then
comp = InputBox(«Введите имя компьютера:», TITLE, comp)
‘проверить доступность компьютера
If Unavailable(comp) Then
MsgBox «Компьютер недоступен:» & vbCrLf & comp, vbExclamation, TITLE
comp = «»
End If
End If
‘проводим инвентаризацию данных машины
If Len(comp) > 0 Then InventComp(comp)
‘если ошибка
If Len(Err.Description) > 0 Then _
If Not SILENT Then MsgBox comp & vbCrLf & «Ошибка:» & vbCrLf & Err.Description, vbExclamation, TITLE
‘== ПОДПРОГРАММЫ
‘инвентаризация данных компьютера, заданного сетевым именем или IP-адресом
‘сохранение отчета с указанным именем
Sub InventComp(compname)
Set wmio = GetObject(«WinMgmts:{impersonationLevel=impersonate}!\\» & compname & «\Root\CIMV2»)
‘некоторые WMI-классы поддерживаются не во всех версиях Windows
Dim build
build = BuildVersion()
‘файл отчета
Set tf = fso.CreateTextFile(DATA_DIR & compname & DATA_EXT, True)
‘первая строка — заголовки
If HEAD_LINE Then tf.WriteLine «Секция отчета;Параметр;Номер экземпляра;Значение»
‘дата проверки
tf.WriteLine «Компьютер;Дата проверки;1;» & Now
Log «Win32_ComputerSystemProduct», _
«UUID», «», _
«Компьютер», _
«UUID»
Log «Win32_ComputerSystem», _
«Name,Domain,PrimaryOwnerName,UserName,TotalPhysicalMemory», «», _
«Компьютер», _
«Сетевое имя,Домен,Владелец,Текущий пользователь,Объем памяти (Мб)»
Log «Win32_OperatingSystem», _
«Caption,Version,CSDVersion,Description,RegisteredUser,SerialNumber,Organization,InstallDate», «», _
«Операционная система», _
«Наименование,Версия,Обновление,Описание,Зарегистрированный пользователь,Серийный номер,Организация,Дата установки»
Log «Win32_BaseBoard», _
«Manufacturer,Product,Version,SerialNumber», «», _
«Материнская плата», _
«Производитель,Наименование,Версия,Серийный номер»
Log «Win32_BIOS», _
«Manufacturer,Name,SMBIOSBIOSVersion,SerialNumber», «», _
«BIOS», _
«Производитель,Наименование,Версия,Серийный номер»
‘не определяется Core 2 в XP SP2, см. http://support.microsoft.com/kb/953955
Log «Win32_Processor», _
«Name,Caption,CurrentClockSpeed,ExtClock,L2CacheSize,SocketDesignation,UniqueId», «», _
«Процессор», _
«Наименование,Описание,Частота (МГц),Частота FSB (МГц),Размер L2-кеша (кб),Разъем,UID»
Log «Win32_PhysicalMemory», _
«Capacity,Speed,DeviceLocator», «», _
«Модуль памяти», _
«Размер (Мб),Частота,Размещение»
‘пропускаются USB-диски
Log «Win32_DiskDrive», _
«Model,Size,InterfaceType», «InterfaceType <> ‘USB'», _
«Диск», _
«Наименование,Размер (Гб),Интерфейс»
‘только локальные диски
‘пропускаются USB-диски, размер которых обычно NULL
Log «Win32_LogicalDisk», _
«Name,FileSystem,Size,FreeSpace,VolumeSerialNumber», «DriveType = 3 AND Size IS NOT NULL», _
«Логический диск», _
«Наименование,Файловая система,Размер (Гб),Свободно (Гб),Серийный номер»
Log «Win32_CDROMDrive», _
«Name», «», _
«CD-привод», _
«Наименование»
‘только для XP/2003 и выше
‘пропускаются «двойники», имеющие в названии слово «Secondary»
If build >= 2600 Then
Log «Win32_VideoController», _
«Name,AdapterRAM,VideoProcessor,VideoModeDescription,DriverDate,DriverVersion», «NOT (Name LIKE ‘%Secondary’)», _
«Видеоконтроллер», _
«Наименование,Объем памяти (Мб),Видеопроцессор,Режим работы,Дата драйвера,Версия драйвера»
Else ‘для Windows 2000
Log «Win32_VideoController», _
«Name,AdapterRAM,VideoProcessor,VideoModeDescription,DriverDate,DriverVersion», «», _
«Видеоконтроллер», _
«Наименование,Объем памяти (Мб),Видеопроцессор,Режим работы,Дата драйвера,Версия драйвера»
End If
‘только для XP/2003 и выше
‘пропускаются отключенные сетевые адаптеры, в том числе минипорты
‘пропускаются виртуальные адаптеры VMware
If build >= 2600 Then
Log «Win32_NetworkAdapter», _
«Name,AdapterType,PermanentAddress,MACAddress», «NetConnectionStatus > 0 AND NOT (Name LIKE ‘VMware%’)», _
«Сетевой адаптер», _
«Наименование,Тип,IP-адрес,MAC-адрес»
Else ‘для Windows 2000
Log «Win32_NetworkAdapter», _
«Name,PermanentAddress,MACAddress», «», _
«Сетевой адаптер», _
«Наименование,IP-адрес,MAC-адрес»
End If
Log «Win32_SoundDevice», _
«Name», «», _
«Звуковое устройство», _
«Наименование»
Log «Win32_SCSIController», _
«Name», «», _
«SCSI контроллер», _
«Наименование»
‘только для XP/2003 и выше
‘пропускаются сетевые принтеры
‘условия «Local = True Or Network = False» недостаточно для принт-серверов, поэтому проверяется порт
If build >= 2600 Then
Log «Win32_Printer», _
«Name,PortName,ShareName», «(Local = True OR Network = False) AND (PortName LIKE ‘%USB%’ OR PortName LIKE ‘%LPT%’)», _
«Принтер», _
«Наименование,Порт,Сетевое имя»
End If
Log «Win32_PortConnector», _
«ExternalReferenceDesignator,InternalReferenceDesignator», «», _
«Разъем порта», _
«Внешний,Внутренний»
Log «Win32_Keyboard», _
«Name,Description», «», _
«Клавиатура», _
«Наименование,Описание»
Log «Win32_PointingDevice», _
«Name», «», _
«Мышь», _
«Наименование»
‘закрыть файл
tf.Close
If Not SILENT Then MsgBox «Отчет сохранен в файл:» & vbCrLf & DATA_DIR & compname & DATA_EXT, vbInformation, TITLE
End Sub
‘составить WQL-запрос, выполнить и записать строку в CSV-файл
‘входные параметры:
‘from — класс WMI
‘sel — свойства WMI, через запятую
‘where — условие отбора или пустая строка
‘sect — соответствующая секция отчета
‘param — соответствующие параметры внутри секции отчета, через запятую
‘для отображения в кратных единицах, нужно их указать в скобках
Sub Log(from, sel, where, sect, param)
Const RETURN_IMMEDIATELY = 16
Const FORWARD_ONLY = 32
Dim query, cls, item, prop
query = «Select » & sel & » From » & from
If Len(where) > 0 Then query = query & » Where » & where
Set cls = wmio.ExecQuery(query,, RETURN_IMMEDIATELY + FORWARD_ONLY)
Dim props, names, num, value
props = Split(sel, «,»)
names = Split(param, «,»)
num = 1 ‘номер экземпляра
For Each item In cls
For i = 0 To UBound(props)
‘взять значение
Set prop = item.Properties_(props(i))
value = prop.Value
‘без проверки на Null возможнен вылет с ошибкой
If IsNull(value) Then
value = «»
‘если тип данных — массив, собрать в строку
ElseIf IsArray(value) Then
value = Join(value,»,»)
‘если указана кратная единица измерения, перевести значение
ElseIf Right(names(i), 4) = «(Мб)» Then
value = CStr(Round(value / 1024 ^ 2))
ElseIf Right(names(i), 4) = «(Гб)» Then
value = CStr(Round(value / 1024 ^ 3))
‘если тип данных — дата, преобразовать в читаемый вид
ElseIf prop.CIMType = 101 Then
value = ReadableDate(value)
End If
‘вывести в файл непустое значение, заменить спецсимвол «;»
value = Trim(Replace(value, «;», «_»))
If Len(value) > 0 Then tf.WriteLine sect & «;» & names(i) & «;» & num & «;» & value
Next ‘i
‘перейти к следующему экземпляру
num = num + 1
Next ‘item
End Sub
‘преобразование даты формата DMTF в читаемый вид (ДД.ММ.ГГГГ)
‘http://msdn.microsoft.com/en-us/library/aa389802.aspx
Function ReadableDate(str)
‘объект недоступен в Windows 2000, поэтому см. далее
‘ Dim dto
‘ Set dto = CreateObject(«WbemScripting.SWbemDateTime»)
‘ dto.Value = str
‘ ReadableDate = dto.GetVarDate(True)
ReadableDate = Mid(str, 7, 2) & «.» & Mid(str, 5, 2) & «.» & Left(str, 4)
End Function
‘узнать версию (билд) WMI-сервера
‘вернуть целое число
Function BuildVersion()
Dim cls, item
Set cls = wmio.ExecQuery(«Select BuildVersion From Win32_WMISetting»)
For Each item In cls
BuildVersion = CInt(Left(item.BuildVersion, 4))
Next
End Function
‘проверить доступность компьютера в сети
‘вернуть True, если адрес недоступен
Function Unavailable(addr)
Dim wmio, ping, p
Set wmio = GetObject(«WinMgmts:{impersonationLevel=impersonate}»)
Set ping = wmio.ExecQuery(«SELECT StatusCode FROM Win32_PingStatus WHERE Address = ‘» & addr & «‘»)
For Each p In ping
If IsNull(p.StatusCode) Then
Unavailable = True
Else
Unavailable = (p.StatusCode <> 0)
End If
Next
End Function
[/spoiler]
При запуске данного сценария, в ранее созданной папке comp появится отчет, который будет иметь имя <имя компьютера>.csv. Данные в нем хранятся в виде текста. Выдернуть их оттуда не очень удобно. Поэтому напишем еще один скрипт, для создания отчета.
Создадим файл с именем comp_report.vbs в который запишем следующее:
[spoiler=Код:]
‘== НАСТРОЙКИ
Const TITLE = «Спецификация компьютеров» ‘заголовок отчета и диалоговых окон
Const DATA_DIR = «comp\» ‘каталог для сохранения отчетов + «\» в конце
‘Const DATA_DIR = «\\SRV\Invent\comp\» ‘сетевой ресурс для сохранения отчетов + «\» в конце
Const DATA_EXT = «.csv» ‘расширение файлов с данными
Const HEAD_LINE = True ‘пропустить первую строку в файле CSV — заголовок
Const REPORT_FILE = «comp_report_%DATE%.htm» ‘имя файла для сохранения отчета
‘количество, порядок и названия столбцов отчета
‘значения должны соответствовать первым двум полям CSV файла!
Dim col(21) ‘<— не забыть проверить верхний индекс!
col(0) = «Компьютер;Сетевое имя»
col(1) = «Компьютер;UUID»
col(2) = «Компьютер;Текущий пользователь»
col(3) = «Операционная система;Наименование»
col(4) = «Операционная система;Обновление»
col(5) = «Материнская плата;Производитель»
col(6) = «Материнская плата;Наименование»
col(7) = «Процессор;Наименование»
col(8) = «Процессор;Частота (МГц)»
col(9) = «Компьютер;Объем памяти (Мб)»
col(10) = «Модуль памяти;Размер (Мб)»
col(11) = «Модуль памяти;Частота»
col(12) = «Диск;Наименование»
col(13) = «Диск;Размер (Гб)»
col(14) = «Диск;Интерфейс»
col(15) = «CD-привод;Наименование»
col(16) = «Видеоконтроллер;Наименование»
col(17) = «Видеоконтроллер;Объем памяти (Мб)»
col(18) = «Сетевой адаптер;Наименование»
col(19) = «Сетевой адаптер;MAC-адрес»
col(20) = «Звуковое устройство;Наименование»
col(21) = «Принтер;Наименование»
‘шапка и подвал отчета в формате XHTML
‘оформление настраивается через CSS внутри тега <style>
Dim header, footer
header = «<html><head>» _
& «<title>» & TITLE & «</title>» & vbCrLf _
& «<meta http-equiv=»»Content-Type»» content=»»text/html; charset=windows-1251″» />» & vbCrLf _
& «<style><!—» & vbCrLf _
& «body,table {font: 10pt Arial, sans-serif}» & vbCrLf _
& «table {border-collapse: collapse}» & vbCrLf _
& «tr,td,th {border: 1px solid gray; padding: 8px}» & vbCrLf _
& «td {vertical-align: top}» & vbCrLf _
& «—></style>» & vbCrLf _
& «</head><body>» & vbCrLf _
& «<h4>» & TITLE & «, » & Date & «</h4>» & vbCrLf _
& «<table>» & vbCrLf
footer = «</table>» & vbCrLf _
& «</body></html>»
‘не завершать скрипт аварийно
On Error Resume Next
‘== ВЫПОЛНЕНИЕ
‘файл отчета
Dim fso, report
Set fso = CreateObject(«Scripting.FileSystemObject»)
report = Replace(REPORT_FILE, «%DATE%», Date)
Set rep = fso.CreateTextFile(report, True)
rep.Write header
‘шапка таблицы
rep.WriteLine «<tr><th>» & Replace(Join(col, «</th><th>»), «;», «:<br />») & «</th></tr>»
‘прочитать все CSV-файлы
Dim dir, fc, f, row
Set dir = fso.GetFolder(DATA_DIR)
Set fc = dir.Files
For Each f in fc
If Right(f.Name, 4) = DATA_EXT Then row = ReadCSV(dir.Path & «\» & f.Name)
If Len(row) > 0 Then rep.WriteLine row
Next
‘закрыть файл отчета
rep.Write footer
rep.Close
MsgBox «Отчет сохранен в файл:» & vbCrLf & report, vbInformation, TITLE
‘== ПОДПРОГРАММЫ
‘определить индекс элемента массива по его значению
‘если значение не найдено, вернуть -1
Function IndexCol(s)
IndexCol = -1
Dim i
For i = 0 To UBound(col)
If col(i) = s Then
IndexCol = i
Exit For
End If
Next
End Function
‘извлечь данные из файла CSV
‘сформировать и вернуть строку таблицы в формате XHTML
‘в случае ошибки вернуть пустую строку
Function ReadCSV(fname)
Dim tf, s, a, k, i
Dim v()
ReDim v(UBound(col))
‘значение по умолчанию — «-»
For i = 0 To UBound(v)
v(i) = «-»
Next
Set tf = fso.OpenTextFile(fname)
If HEAD_LINE Then tf.ReadLine ‘пропустить первую строку
Do Until tf.AtEndOfStream
s = tf.ReadLine
a = Split(s, «;»)
k = a(0) & «;» & a(1)
i = IndexCol(k)
If i > -1 Then
If a(2) > 1 Then ‘несколько экземпляров разделяются «;»
v(i) = v(i) & «;» & a(3)
Else
v(i) = a(3)
End If
End If
Loop
tf.Close
‘несколько экземпляров оформить списком в формате XHTML
For i = 0 To UBound(v)
‘If InStr(v(i), «;») Then v(i) = Replace(v(i), «;», «<br />») ‘более удачный для экспорта вариант?
If InStr(v(i), «;») Then v(i) = «<ul><li>» & Replace(v(i), «;», «</li><li>») & «</li></ul>»
Next
ReadCSV = «<tr><td>» & Join(v, «</td><td>») & «</td></tr>»
End Function
[/spoiler]
После этих манипуляций, при запуске созданного сценария, будет формироваться отчет, который состоит из таблицы с данными машины. Файл отчета будет иметь имя <comp_report_dd_mm_yy>.htm.
Разберемся теперь, в чем отличия и схожести VBScript и JavaScript.
Общие черты у них присущи в следующем:
— оба языка легко выучить, создание программы не требует вложения больших денег;
— оба используются для расширения функционала страницы сайта;
— оба работают на клиентских машинах, уменьшают нагрузку на сервер;
— оба могут выполнять злонамеренные сценарии на машинах пользователя;
Теперь разберем отличия, которые очень существенны:
— JavaScript – для браузеров, является сценаримв по умолчанию, а VBScript должен быть определен как сценарий;
— JavaScript – является кросбраузерным, чего нельзя сказать о VBScript который работает только в Internet Explorer;
— JavaScript – чувствителен к регистру, VBScript – нет;
Как видно, различий не так много. JS поддерживает только функции, VBS и функции и процедуры (подпрограммы). Так что можете сделать выводы, тем, кто знает ява скрипт, будет легко освоить VBS, а тем кто не знает пока ни того не другого будет еще легче, поскольку переучиваться не придется.
Учиться лучше на примерах.
Автор: Михайлов Дмитрий
Похожие публикации
2011-12-13 • Просмотров [ 16927 ]
Урок VBScript №9: Строковые функции. Работа с текстом
Сегодня я хотел бы познакомить вас с интересной статьёй про строковые функции VBScript. Этот материал будет очень интересен и полезен, так как мы можем любую используемую информацию превратить в текст и произвести с ним нужные нам действия при помощи данных функций. Благодаря им мы можем создавать свой парсер (грабер) html кода веб страницы, текстовый редактор и многое другое. Ну что же, приступим.
Функции InStr и InStrRev
Функция InStr позволяет получить номер символа (позицию) с которого начинается искомая фраза или другая последовательность символов.
Синтаксис функции: InStr([Начальный Символ,] Строка1, Строка2 [, Сравнение])
Начиная с этого урока, я буду помещать не обязательные параметры в квадратные скобки. А теперь рассмотрим их получше:
- Начальный Символ — номер символа, с которого надо начинать искать. При этом отчёт всё равно будет идти от первого символа.
- Строка1 — строка в которой ищем
- Строка2 — строка которую ищем
- Сравнение — учитывать или не учитывать регистр. Да — 0 = vbBinaryCompare, Нет — 1 = vbTextCompare. По умолчанию 0.
Функция InStrRev работает аналогично, но с конца строки. При этом возвращаемый результат отсчитывается от начала строки.
Синтаксис: InStr(Строка1, Строка2[, Начальный Символ] [, Сравнение])
Теперь посмотрим примеры обоих функций
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_1.vbs '******************************************************** Dim a, b a = "Строка в которой что-то ищут" b = "Что-то" MsgBox InStr(19,a,b) & vbCrlf & InStr(3,a,b) & vbCrlf & InStr(3,a,b,1) & vbCrlf & InStr(19,a,b,1) MsgBox InStrRev(a,b,23) & vbCrlf & InStrRev(a,b,23,1) & vbCrlf & InStrRev(a,b,-1,1)
В данном примере четыре варианта использования функции InStr. Стоит отметить, что если вы указываете сравнение, то будет обязательным использование аргумента Начальный Символ.
Функция Mid
Данная функция vbs позволяет вырезать из строки определённое количество символов.
Синтаксис: Mid(строка, начало[, длина])
- Строка — Понятно. Строка, с которой работаем.
- Начало — Номер символа, с которого начинаем
- Длина — Сколько символов вырезаем. Не обязательно.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_2.vbs '******************************************************** Dim a, b, c a = "Строка в которой что-то ищут" b = "Что-то" c = InStr(3,a,b,1) Msgbox Mid(a,c) & vbCrlf & Mid(a,c,3)
В данном примере я так же использовал предыдущую функцию. При помощи данных функций легко создать парсер html кода веб страниц. Я активно их использовал при создании парсера почт групп Мой Мир Mail.ru.
Функции LCase и UCase
Данные функции позволяют преобразовать все символы строки к нижнему (LCase) и верхнему (UCase) регистру. Данные функции могут быть полезны в разных ситуациях. Например, когда вы создаёте диалоговое окно InputBox куда надо что то вписать, а потом найти совпадение в условных операторах.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_3.vbs '******************************************************** Dim a, b a = "СтРоКа 1" b = "СтРоКа 2" Msgbox LCase(a) & vbCrlf & UCase(b)
Функции Left и Right
Данные функции VBScript возвращают нам определённое количество символов с начала (Left) и конца (Right) строки.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_4.vbs '******************************************************** Dim a a = "СтРоКа 1" Msgbox Left(a,3) & vbCrlf & Right(a,3)
Функции LTrim, RTrim и Trim
Данные функции убирают пробелы вначале (LTrim), в конце (RTrim) и с обоих сторон (Trim) строки.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_5.vbs '******************************************************** Dim a, b a = " СтРоКа " b = "!" Msgbox LTrim(a) & b & vbCrlf & RTrim(a) & b & vbCrlf & Trim(a) & b
Функция Replace
Это очень интересная функция. Она позволяет производить замену указанных символов на другие.
Синтаксис: Replace(Строка, Что ищем, Чем заменяем [, Начало[, Кол. Замен[, Сравнение]]])
- Строка — Строка, в которой ищем
- Что ищем — Комбинация символов, которые надо заменить.
- Чем заменить — Понятно.
- Начало — с какого по счёту символа начинать поиск.
- Кол. Замен — количество замен, которые нужно сделать. По умолчанию заменит все совпадения (-1).
- Сравнение — учитывать или не учитывать регистр. Да — 0 = vbBinaryCompare, Нет — 1 = vbTextCompare. По умолчанию 0.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_6.vbs '******************************************************** Dim a a = "VBHack.Ru лучший сайт!" Msgbox Replace(a,"лучший","самый лучший")
Функции Space и String
Space — формирует строку из указанного количества пробелов.
String — формирует строку из указанного символа, повторяющегося указанное количество раз.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_7.vbs '******************************************************** Dim a, b a = Space(10) b = String(3,"V") Msgbox a & b & vbCrlf & b
Функция StrComp
Эта функция сравнивает сроки и возвращает три результата.
Синтаксис: StrComp(строка 1, строка 2[, сравнение])
Возвращаемые результаты:
- -1 — Если строка 1 меньше строки 2
- 0 — Если строки равны(по символам и их количеству)
- 1 — Если строка 1 больше строки 2
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_8.vbs '******************************************************** Dim a, b, c a = "строка" b = "строка" c = StrComp(a,b) If c = 0 then MsgBox "Строки совпадают" elseif c = 1 then MsgBox "Строка а больше строки b" elseif c = -1 then MsgBox "Строка а меньше строки b" end if
Функция StrReverse
Забавная функция vbs которая меняет порядок символов на противоположный (задом на перёд)
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_9.vbs '******************************************************** Dim a a = "унитаз" MsgBox StrReverse(a)
Функция Len
Данная функция возвращает количество символов в строке.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_10.vbs '******************************************************** Dim a a = "унитаз" MsgBox Len(a)
Функции Asc и Chr
Asc — Возвращает ASCII-код первого символа в строке.
Chr — Возвращает символ по указанному ASCII-коду.
'******************************************************** 'Урок VBScript №9: 'Строковые функции. Работа с текстом 'file_11.vbs '******************************************************** Dim a, b, c a = "унитаз" b = Asc(a) c = Chr(b) MsgBox "ANSI " & c & ": " & b
На этом у меня всё! До новых встреч!
Урок VBScript №10: Работа с текстовыми документами — TextStream
Вот наконец мы и добрались до урока по работе с текстовыми файлами при помощи VBScript. С этим нам поможет объект TextStream. Мы научимся создавать, открывать текстовые файлы, а так же записывать в ниж данные и считывать информацию. Вполне полезная тема, давайте приступим.
Прежде всего надо упомянуть то, что для работы с файловой системой требуется объект FileSystemObject, в простонародье FSO. В примерах показано его создание.
Создание текстового файла при помощи VBS
Для создания текстового файла нам понадобится объект FSO и метод CreateTextFile.
Параметры: CreateTextFile(Название [, Перезапись[, Кодировка]])
- Название — Путь и название файла вместе с его расширением. Например «test.txt» или «C:\Papka\test.txt».
- Перезапись — Если Tru, то перезаписывать файл. False — не перезаписывать файл. По умолчанию False.
- Кодировка — Определяет кодировку файла. True – формат Unicode или False – формат ASCII.
Последние два параметра не обязательные. Теперь посмотрим пример создания пустого текстового документа при помощи vbs:
'******************************************************** 'Урок VBScript №10: 'Работа с текстовыми документами - TextStream. 'file_1.vbs '******************************************************** Dim FSO, Txt Set FSO = CreateObject("Scripting.FileSystemObject") Set Txt = FSO.CreateTextFile("txt.txt", True)
Так же можно создавать текстовые документа при помощи метода OpenTextFile.
Метод OpenTextFile
Данный метод позволяет открывать текстовый файл, а так же вносить в него изменения.
Параметры: OpenTextFile(Название [, Режим [, Запись [, Формат]]])
- Название — Путь и название файла вместе с его расширением. Например «test.txt» или «C:\Papka\test.txt».
- Режим — (1) — Только для чтения; (2) — Для записи. Если файл существовал, то его содержимое теряется; (8) — Дописывать в конец файла.
- Запись — Создать файл, если он не существует (True), в противном случае False. По умолчанию False
- Формат — (0) — Открыть файл в формате ASCII; (-1) — Открыть файл в формате Unicode; (-2) — По умолчанию системы. По умолчанию стоит (0).
'******************************************************** 'Урок VBScript №10: 'Работа с текстовыми документами - TextStream. 'file_2.vbs '******************************************************** Dim FSO, File Set FSO = CreateObject("Scripting.FileSystemObject") Set File = FSO.OpenTextFile("base.txt", 1, True) File2.Close
Свойства TextStream
- AtEndOfLine — возвращает два значения: True — если достигнут конец строки. В противном случае — False. Работает только если файл открыт для чтения.
- AtEndOfStream — Возвращает значение True, если достигнут конец файла и Fale в противном случае. Работает только если файл открыт для чтения.
- Column — Возвращает номер колонки текущего символа.
- Line — Возвращает номер текущей строки.
Примеры с данными свойствами я покажу ниже. Для начала нам нужно познакомиться с методами TextStream.
Методы TextStream
- Close — закрывает открытый файл.
- Read — Считывает указанное количество символов и возвращает полученную строку. Количество символов указывать в круглых скобках.
- ReadAll — Считывает всё содержимое файла.
- ReadLine — Считывает строку из файла и возвращает её.
- Skip — Пропускает указанное количество символов при чтении. Количество символов указывать в круглых скобках.
- SkipLine — Пропускает одну строку при чтении файла.
- Write — Записывает в файл указанную строку. Символы возврата каретки и новой строки в файл не записываются
- WriteLine — Записывает в файл указанную строку. В файл записываются символы возврата каретки и новой строки.
- WriteBlankLines — записывает в файл указанное количество строк.
А теперь давайте посмотрим примеры.
'******************************************************** 'Урок VBScript №10: 'Работа с текстовыми документами - TextStream. 'file_3.vbs '******************************************************** Dim FSO, arr_Line, File, Txt, my_arr() Set FSO = CreateObject("Scripting.FileSystemObject") Set Txt = FSO.CreateTextFile("base.txt", True) Txt.Write("строка 1" & vbCrlf & "строка 2" & vbCrlf & "строка 3" & vbCrlf & "строка 4" & vbCrlf & "строка 5" & vbCrlf & "строка 6" ) Set File = FSO.OpenTextFile("base.txt", 1) arr_Line = 0 Do Until File.AtEndOfStream ' пока наступит конец файла Redim Preserve my_arr(arr_Line) my_arr(arr_Line) = File.ReadLine ' Считываем строку arr_Line = arr_Line + 1 Loop File.Close 'закрываем base.txt MsgBox my_arr(3)
В данном примере я создаю текстовый файл «base.txt», в который записываю шесть строк. Далее мы открываем этот файл и создаём из его строк массив при помощи цикла Do … Loop и свойства AtEndOfStream (пока не достигнем конца файла), а так же метода ReadLine (Считывает строку из файла). В конце мы закрываем «base.txt» и выводим любой элемент массива.
Как видно из примера — ко всем методам и свойствам надо указывать объект, с которым работаем.
'******************************************************** 'Урок VBScript №10: 'Работа с текстовыми документами - TextStream. 'file_4.vbs '******************************************************** Dim FSO, File, Txt, File2 Set FSO = CreateObject("Scripting.FileSystemObject") Set Txt = FSO.CreateTextFile("base.txt", True) Txt.Write("строка 1" & vbCrlf & "строка 2" & vbCrlf) Txt.WriteLine("строка 3") Txt.WriteLine("строка 4") Txt.WriteLine("строка 5") Txt.WriteBlankLines 2 Txt.WriteLine("строка 6") Set File = FSO.OpenTextFile("base.txt", 1) Str1 = File.ReadAll File.Close Set File = FSO.OpenTextFile("base.txt", 1) Str2 = File.ReadLine File.SkipLine Str3 = File.ReadLine File.Skip(3) Str4 = File.ReadLine Str5 = File.Read(3) File.Close Set File2 = FSO.OpenTextFile("base2.txt", 2, True) File2.Write("строка") File2.Close MsgBox Str1:MsgBox Str2:MsgBox Str3:MsgBox Str4:MsgBox Str5
В данном простеньком примере я использовал все методы TextStream. Стоит обратить внимание на то, что после использования метода «ReadAll» не получится использовать остальные методы чтения.
Так же при открытие текстового файла мы можем вносить в него изменения, что то же показано в примере.
На этом я считаю тему закрытой. До новых встреч!
Урок VBScript №2: Условные операторы if … else и select … case
Вот мы и добрались до второго урока по VBScript (vbs). В этом уроке я расскажу про условный оператор if … else а так же про оператор выбора select … case. Это два очень полезных оператора без которых почти не обойтись при создании сценария vbs. Они позволяют выполнять определённые выражения при соблюдении определённого условия.
Вступление
В этом уроке мы пройдём:
- Все виды конструкций условных операторов if … else
- Логические операторы And, Not, Or, Xor, Imp, Eqv
- Оператор выбора select … case
- Совместное использование операторов
Порой зачастую нам нужно задать логику сценарию. Сделать так, что если а = 10, то сделать это, а ели число другое, то сделать вот это. В таких ситуациях нам на помощь приходят эти операторы vbs.
Условный оператор if … else
Существуют три конструкции условного оператора if … else. Всё будет зависеть от требуемой сложности и задачи сценария VBScript.
if <проверка условия> then <выражение> end if — Самый простой пример условия в сценарии vbs. После ключевого слова if идёт проверка условия. Если это условие соблюдается (истина по другому True), то выполняется выражение написанная после ключевого слова then. Если же условие не выполняется(ложь по другому False), то ничего не происходит.
if <проверка условия> then <выражение 1> else <выражение 2> end if — Это уже более сложная и функциональная конструкция условного оператора vbs. Тут всё как и первом примере, но если условие не совпадает, то выполняется выражение после ключевого слова else.
if <проверка условия> then <выражение 1> elseif <проверка условия 2> then <выражение 2> ….. end if — уже более сложная конструкция. Тут уже при не выполнение условия (ложь) происходит ещё одна проверка условия и если оно совпадает, то выполняется выражение следуемая после второго ключевого слова Then. И так можно до бесконечности, что, конечно же очень удобно.
Так же нужно отметить что последние две конструкции условного оператора должны закрываться End if, в противном случае вылезет ошибка.
Теперь закрепим это примером:
'Урок VBScript №2: 'Создание условий при помощи оператора if, else а так же select, case 'file_1.vbs Dim a, b, c a = 10 b = 20 c = 40.5 'пример первой конструкции if a = 10 then MsgBox "a = 10" 'пример второй конструкции if b = 10 then MsgBox "b = 10" else MsgBox "b не равно 10" end if 'пример третьей конструкции if c = 10 then MsgBox "c = 10" elseif c = 20 then MsgBox "b = 20" elseif c = 40.5 then MsgBox "b = 40,5" MsgBox "ура!" else MsgBox "совпадений не найдено" End if
Как мы видим, в одну строку нам удастся прописать только условие первой конструкции. Если мы попытаемся прописать в одну строку другие два условия, то у нас выдаст ошибку. Для своего удобства я делаю отступ выражения Tab’ом. Так же можно прописывать несколько строк выражения.
Логические операторы And, Not, Or, Xor, Imp, Eqv
Так же в помощь условным операторам созданы логические операторы:
- And — И. Оба условия должны быть верными — правдой (True)
- Not — Отрицание. Условие должно быть ложным (False). При этом считается что условие выполняется (True)
- Or — Или. Хотя бы одно из условий должно быть правдой (True)
- Xor — Логическое исключение. Возвращает True (правда), если одно из условий False (Не правда)
- Imp — импликация. Если первое условие правда (True), а второе ложь (False), то это условие в целом считается ложью (False). Во всех остальных случаях условие правда (True).
- Eqv — эквивалентность двух выражений. Если два элемента одинаковы (True или False), то результат True
Думаю они очень понятны и пример ниже не нуждается в объяснение:
'Урок VBScript №2: Создание условий при помощи оператора if, else а так же select, case 'Использование логических операторов 'file_2.vbs Dim a, b, c, x, x2, x3, x4 a = 10 b = 100 c = 101 x = True x2 = True x3 = False x4 = False If a = 10 And b = 100 then Msgbox "Условие №1 совпадает" If a = 10 And c = 100 then Msgbox "Условие №2 совпадает" If Not b = 100 Then Msgbox "Условие №3 совпадает" If Not c = 100 then Msgbox "Условие №4 совпадает" If a = 10 Or b = 100 then Msgbox "Условие №5 совпадает" If a = 10 Or c = 100 then Msgbox "Условие №6 совпадает" If a = 10 Xor b = 100 then Msgbox "Условие №7 совпадает" If a = 10 Xor c = 100 then Msgbox "Условие №8 совпадает" If a = 10 Imp b = 101 then Msgbox "Условие №9 совпадает" If a = 11 Imp b = 100 then Msgbox "Условие №10 совпадает" if x Eqv x2 then Msgbox "Условие №11 совпадает" if x Eqv x3 then Msgbox "Условие №12 совпадает" if x4 Eqv x3 then Msgbox "Условие №13 совпадает"
Условный оператор выбора select … case
Теперь давайте разберём всё про условный оператор выбора select … case. Этот оператор может проверить переменную на соответствии с предполагаемыми значениями или переменными.
Структура довольно проста:
Select case <имя переменной>
case <предполагаемое значение 1>
<выражение 1>
case <предполагаемое значение 2>
<выражение 2>
……….
case else
<выполнение выражения, если не подошли значения>
End Select
По сути то же самое что и с if … else, но в данном случае немного урезан функционал оператора, а именно количество переменных которые мы можем проверить одновременно. End Select закрывает условие.
Теперь закрепим это примером:
'Урок VBScript №2: 'Создание условий при помощи оператора select ... case 'file_3.vbs Dim a a = 10 Select case a case 3 b = "b = 3" case 10 b = "b = 10" case else b = "b = " & a End Select MsgBox b
Думаю с данным примером всё понятно и объяснять ничего не надо. Функцию MsgBox Вы можете вызывать в теле оператора, как и в первом примере. Заместо предпологаемого значения Вы можете поставить переменную («case a» вместо «case 10»).
Совместное использование операторов
Язык VBScript позволяет нам использовать условные операторы совместно друг с другом, применяя их даже в своём теле. Думаю, наглядней будет посмотреть пример:
'Урок VBScript №2: Создание условий при помощи оператора if, else а так же select, case 'Совместное использование операторов 'file_4.vbs Dim a, b, c a = 10 b = 100 c = 1000 If a = 10 then If b = 100 then MsgBox "Условие №1 совпадает" else MsgBox "Условие №1 не совпадает" end if else Select case a case 100 MsgBox "Условие №2 совпадает" case else If c = 1000 then MsgBox "Условие №3 совпадает" End Select end if
Тут Вы можете поэкспериментировать со значениями переменной «a».
Вот и подошёл к концу второй урок по языку VBScript (vbs). Надеюсь, он оказался полезен и интересен Вам. До новых встреч на VBHack.Ru
Функция | Описание |
---|---|
Array(arglist) | Возвращает массив, составленный из элементов списка arglist. Элементы в списке arglist должны быть отделены друг от друга запятыми. |
LBound(arrayname[, dimension]) | Возвращает наименьшее значение, которое которое может принимать индекс в массиве arrayname в размерности dimension (по умолчанию параметр dimension равен 1). |
UBound(arrayname[, dimension]) | Возвращает наибольшее значение, которое которое может принимать индекс в массиве arrayname в размерности dimension (по умолчанию параметр dimension равен 1). |
Filter(inputStrings, value[, include[, compare]]) | Возвращает массив, созданный путём фильтрации переданного массива по заданным критериям. Параметр inputStrings — исходный одномерный массив строк. Параметр value — строка, критерий отбора. Параметр include — если задано true, в результат попадут только строки, которые содержат подстроку value, если задано false — в результат попадут только строки, которые не содержат подстроку value. Параметр compare — тип сравнения (0 — двоичный, 1 — текстовый). |
IsArray(varname) | Возвращает true, если параметр varname является массивом, и false в противном случае. |
IsDate(varname) | Возвращает true, если параметр varname задаёт корректную дату, и false в противном случае. |
IsEmpty(varname) | Возвращает true, если переменная varname объявлена, но не инициализирована, и false в противном случае. |
IsNull(varname) | Возвращает true, если переменная varname не содеоржит никаких корректных данных, и false в противном случае. |
IsNumeric(varname) | Возвращает true, если переменная varname может быть рассмотрена в качестве числа, и false в противном случае. |
IsObject(varname) | Возвращает true, если переменная varname является указателем на внешний объект, и false в противном случае. |
VarType(varname) | Возвращает числовое значение, соответствующее подтипу переменной varname (см. описание констант подтипов данных в разделе «Прочие константы»). |
TypeName(varname) | Возвращает строку, содержащую тип переменной varname. |
Hex(number) | Возвращает шестнадцатеричное представление (в символьном виде) числа number. |
Oct(number) | Возвращает восьмеричное представление (в символьном виде) числа number. |
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). |
GetLocale | Возвращает текущее значение (ID) настроек локализации (набор установок языка, региона, раскладки клавиатуры и т.д.). Возможные значения — см. MSDN статью «Locale ID (LCID) Chart». |
SetLocale(lcid) | Возвращает текущее значение (ID) настроек локализации (набор установок языка, региона, раскладки клавиатуры и т.д.) и устанавливает новое. Возможные значения — см. MSDN статью «Locale ID (LCID) Chart». |
ScriptEngine | Возвращает название текущего языка, например, «VBScript». |
ScriptEngineBuildVersion | Возвращает номер сборки текущей среды исполнения скриптов. |
ScriptEngineMajorVersion | Возвращает номер версии текущей среды исполнения скриптов. |
ScriptEngineMinorVersion | Возвращает номер подверсии текущей среды исполнения скриптов. |
RGB(red, green, blue) | Возвращает целочисленное значение, соответствующее цвету RGB, заданному с помощью трёх составляющих — красного, зелёного и синего цветов числами от 0 до 255. |
Урок VBScript №3: Функции (Function) и процедура (Sub)
В данном уроке речь пойдёт о функции Function … End Function — подпрограммы, которая возвращает определённое значение и о процедуре Sub … End Sub — подпрограмме, которая ничего не возвращает. Парой они могут оказаться просто жизненно необходимыми при решение некоторых задач в сценариях VBScript.
Функция Function … End Function.
Язык VBScript позволят создавать собственные функции и процедуры и в этом нам сейчас предстоит разобраться.
Функция (Function … End Function) может пригодиться нам когда нужно выполнить одно и то же действие (сценарий, по другому — выражение) несколько раз, но с разными данными. Вместо того, что бы по сто раз дублировать одно и то же выражение, можно записать его только один раз.
Вначале идёт ключевое слово Function, а после него идёт название функции, которое Вы придумываете сами. После её названия в круглых скобках, через запятую, указываются параметры функции. Далее уже идёт тело функции, которое закрывается ключевыми словами End Function. Давайте посмотрим пример:
'Урок VBScript №3 'Функции (Function ... End Function) и процедуры (Sub ... End Sub) 'file_1.vbs dim a, b Function fun_name(a, b) Dim rezult rezult = a+b fun_name = rezult 'присваиваем значение функцие, которое она нам вернёт End Function MsgBox fun_name(5,110) MsgBox fun_name(15,16) MsgBox fun_name(25,15)
На примере видно, что в функции можно объявлять свои переменные. Так же можно в теле самой функции, присвоить переменной значение которое она нам вернёт. Эта переменная имеет такое же название, что и функция. Это нужно для того что бы функция возвращала нам значения при её вызове с помощью MsgBox в конце примера. Если этого не надо, то функция вызывается так: fun_name 5,110 (без скобок).
С этим вроде бы всё понятно. Теперь идём дальше.
Процедура Sub … End Sub.
Процедура Sub … End Sub можно использовать в тех же целях, что и функцию (Function … End Function), но с одним условием — она не возвращает значение. Всё происходит в теле самой процедуры.
Процедура объявляется ключевым словом Sub, далее идёт произвольное имя процедуры и в круглых скобках её значение. Закрывается процедура ключевыми словами End Sub. Давайте посмотрим на пример:
'Урок VBScript №3 'Функции (Function ... End Function) и процедуры (Sub ... End Sub) 'file_2.vbs dim a, b Sub sub_name(a, b) Dim rezult rezult = a+b MsgBox rezult End Sub Call sub_name(5,110) Call sub_name(15,16) Call sub_name(25,15) sub_name 25,1
Значение процедуры не уходит дальше самой процедуры, то есть не возвращает. По этой причине я поместил MsgBox в тело самой процедуры.
Процедуру можно вызвать двумя способами. Можно прописать имя процедуры со значениями после ключевого слова Call, либо без него и значения указываются без скобок (sub_name 25,1).
На этом вроде бы всё. Надеюсь, данный урок был понятен и полезен Вам. До новых встреч!
Изучите VBScript с нуля (более 15 подробных руководств)
Введение в Microsoft VBScript (Visual Basic Script): Учебное пособие по VBScript № 1
В сегодняшнем сценарии VBScript оказался очень важной темой, особенно для новичков, которые хотят изучить язык сценариев или инструменты автоматизации, такие как QTP / UFT.
=> Нажмите здесь, чтобы просмотреть серию учебных пособий по QTP
=> ПРОКРУТИТЕ ВНИЗ, чтобы увидеть полный список из 15+ углубленных учебников по VBScript для начинающих
Мы рассмотрим серию учебных пособий по сценариям VB, чтобы помочь разработчикам и тестировщикам быстро изучить VBScript в простой и понятной форме.
В своих последующих уроках я расскажу о других важных темах VBScript, таких как переменные, константы, операторы, массивы, функции, процедуры, объекты Excel, объекты соединений и т. Д., Что, в свою очередь, создаст простой понимание среди пользователей для простого и эффективного изучения языка программирования VBScript.
*********************************************** ***************
==> Изучите VBScript с помощью этих 15 учебных пособий <==
Учебник № 1: Введение в VBScript
Учебник № 2: Объявление и Использование переменных в VBScript
Учебное пособие № 3: Операторы, приоритет операторов и константы в VBScript
Учебное пособие № 4: Использование условных операторов в VBScript
Учебное пособие № 5: Циклов в VBScript, а также часть 2 здесь
# 6: Использование процедур и функций в VBScript
Урок № 7: Массивы в VBScript
Урок № 8: Функции даты в VBScript
Урок № 9: Работа со строками и файлами cookie в VBScript
Учебник № : Работа с событиями в VBScript
Урок № 11: Работа с объектами Excel в VBScript
Урок № 12: Работа с объектами соединения в VBScript
Учебник № 13: Работа с файлами в VBScript
Урок № 14: Обработка ошибок в VBScript
Учебник № 15: Вопросы на собеседовании по VBScript
************** *************************************************
Изначально я выбрал первую тему как «Введение в VBScript».
В этом руководстве я рассмотрю основы VBScript, тем самым уделяя больше внимания его функциям, поддерживаемым им типам данных и методологиям кодирования, а также процедуре обработки комментариев и форматов в сценариях .
Что такое VBScript?
Как понятно из названия, VBScript — это «язык сценариев» . Это легкий нечувствительный к регистру язык программирования, разработанный Microsoft. Это подмножество «Visual Basic», или мы можем также назвать его более легкой версией языка программирования Microsoft Visual Basic.
Большинство из нас использовали бы Visual Basic во время обучения в нашей школе или колледже. Visual Basic — это язык программирования, управляемый событиями, и интегрированная среда разработки от Microsoft.
Язык VBScript используется в QTP для кодирования и выполнения сценариев автоматического тестирования. Это не очень сложный язык для изучения, и, обладая небольшими знаниями базовых навыков программирования и страстью к написанию кода, любой может легко выучить его. Для тех, кто знает Visual Basic, это дополнительное преимущество.
Тестировщики автоматизации, которые хотят создавать, поддерживать и выполнять тесты в QTP, должны иметь базовые навыки программирования с использованием VBScript.
Основы концепций написания сценариев VB
Теперь давайте перейдем к некоторым основным темам, которые вращаются вокруг VBScript, чтобы обеспечить четкое понимание и знание VBScript.
Типы данных
1) Существует только один тип данных: Вариант . Он может хранить различную информацию в зависимости от контекста, в котором она используется.
2) Если используется в числовом контексте, это число или строка, если используется в строковом выражении.
3) Если число должно вести себя как строка, мы можем заключить его в «».
4) Существуют различные подтипы варианта. Вы можете явно указать эти подтипы, чтобы получить четкое определение ваших данных. Ниже приведен снимок экрана из руководства пользователя VB, на котором показаны все подтипы данных, которые можно использовать:
(щелкните изображение, чтобы увеличить)
5) Функции преобразования могут использоваться для преобразования одного подтипа данных в еще один.
6) Поскольку это единственный доступный тип данных, все значения, возвращаемые функцией, являются вариантами.
Вот различные примеры сценариев VBS, которые вы можете попробовать самостоятельно.
Переменные
1) Переменная — это не что иное, как пространство в памяти компьютера, в котором может храниться определенная информация. Эта информация обязательно будет меняться время от времени. Где информация поступает физически, несущественно, но при необходимости к ней можно получить доступ или изменить, указав имя переменной.
Например: если есть оператор, который вы хотите выполнить несколько раз, вы можете использовать переменную для хранения этого числа. Скажем, X. X — это переменная, которая может использоваться для хранения, изменения и использования пространства в памяти, где мы хотим вести счет.
2) Все переменные относятся к типу данных Variant.
3) Объявление переменной перед ее использованием необязательно, хотя это хорошая практика.
4) Чтобы сделать декларацию обязательной, доступно « Option Explicit» Заявление.Для объявления переменных:
Dim x — объявляет x
Dim x, y, z — объявляет несколько переменных
X = 10 — Так присваивается значение. Как правило, переменная — это левый компонент, а правая — его значение.
X = «Swati» — так присваивается строковое значение.
Чтобы сделать объявления обязательными, нужно написать следующий код:
Option Explicit
Dim x, stri
Если бы явный оператор Option не использовался, мы могли бы напрямую написать:
x = 100
stri = «Swati»
, и это не привело бы к ошибке.
5) Соглашение об именах : имена должны начинаться с буквенного символа, должны быть уникальными, не могут содержать встроенную точку и не могут превышать 255 символов.
6) Переменная, содержащая одно значение, является скалярной переменной, а переменная, у которой более одного значения, является массивом.
7) Одномерный массив может быть объявлен как Dim A (10). Все массивы в VB Script начинаются с нуля, что означает, что индекс массива начинается с 0 до объявленного числа.Это означает, что в нашем массиве A 11 элементов. Начиная с 0 до 10.
8) Чтобы объявить двумерный массив, просто разделите количество строк и столбцов запятой. Например: Dim A (5, 3). Это означает, что в нем 6 строк и 4 столбца. Первое число всегда является строкой, а второе — запятой.
9) Существует также динамический массив, размер которого может изменяться во время выполнения. Эти массивы могут быть объявлены с помощью операторов dim или redim.
Если массив объявлен как Dim A (10) и во время выполнения, если нам нужно больше места, мы можем сделать то же самое, используя оператор: redim A (10).Существует оператор «Сохранить», который можно использовать вместе с оператором redim.
Размер A (10,10)
……
….
Redim preserve A (10,20)
Этот фрагмент кода показывает, как мы это делаем. Первоначально A представляет собой массив 11 на 11. Затем мы изменяем его размер, чтобы он стал массивом 11 на 21, и оператор preserve гарантирует, что данные, которые ранее содержались в массиве, не были потеряны.
Константы
- Как следует из названия, константа — это не что иное, как неизменное значение в программе, которой присвоено имя.
- Их можно объявить, добавив к имени префикс «Const».
- Например: Const a = «10» или Const Astr = «Swati».
- Это значение нельзя случайно изменить во время работы сценария.
Операторы
Некоторые из наиболее часто используемых важных операторов:
- Объединение строк: & (например: Dim x = «good» & «day», поэтому x содержит «goodday»
- Дополнение (+)
- Вычитание (-)
- Умножение (*)
- Деление (/)
- Логическое отрицание (Not)
- Логическая конъюнкция (And)
- Логическая дизъюнкция (Или)
- Равенство (=)
- Неравенство (<>)
- Меньше (<)
- Больше чем (>)
- Меньше или равно (<=)
- Больше или равно (> =)
- Эквивалентность объекта (Is)
Важно отметить, что список не является полным, а представляет собой лишь подмножество, содержащее наиболее часто используемые операторы.
Правила приоритета операторов следующие:
- Умножение или деление имеют приоритет перед сложением или вычитанием
- Если умножение и деление существуют в одном и том же выражении, то учитывается порядок слева направо.
- то же выражение, то также учитывается левый и правый порядок.
- Порядок можно изменить, используя круглые скобки. В этом случае сначала выполняется выражение в скобках.
- Оператор & имеет приоритет после всех арифметических операторов и перед всеми логическими операторами.
Среды, поддерживающие VBScript
В первую очередь существует 3 среды, в которых можно запускать VBScript.
Они включают:
# 1) IIS (Internet Information Server): I Internet I nformation S erver — это веб-сервер Microsoft.
# 2) WSH (Windows Script Host): W indows S cript H ost — это среда размещения операционной системы Windows.
# 3) IE (Internet Explorer): I nternet E xplorer — это простая среда хостинга, которая наиболее часто используется для запуска скриптов.
Типы данных в VBScript
В отличие от других языков, VBScript имеет только 1 тип данных, который называется Variant .
Поскольку это единственный тип данных, который используется в VBScript, это единственный тип данных, который возвращается всеми функциями в VBScript.
Вариантный тип данных может содержать различные виды информации в зависимости от того, как он используется. Например, Если мы используем этот тип данных в контексте String, тогда он будет вести себя как String, и если мы будем использовать его в контексте Numeric, тогда это будет вести себя как Number. Это особенность типа данных Variant.
Тип данных Variant может содержать несколько подтипов. Теперь давайте посмотрим, какие все значения / данные будут возвращены при использовании определенного подтипа.
Подтипы включают:
# 1) Пусто: Этот подтип указывает, что значение будет 0 в случае числовых переменных и «» для строковых переменных.
# 2) Null: Этот подтип указывает на отсутствие действительных данных.
# 3) Boolean: Этот подтип указывает, что результирующее значение будет либо истинным, либо ложным.
# 4) Байт: Этот подтип показывает, что результирующее значение будет лежать в диапазоне от 0 до 255, т.е. результат будет из любого значения в диапазоне от 0 до 255.
# 5) Целое число: Этот подтип показывает, что результирующее значение будет находиться в диапазоне от -32768 до 32767 i.е. результат будет из любого значения в диапазоне от -32768 до 32767
# 6) Валюта: Этот подтип указывает, что результирующее значение будет находиться в диапазоне от -922,337,203,685,477,5808 до 922,337,203,685,477,5807, т.е. результат будет в диапазоне от — 327-922,337,203,685,477,5808 до 922,337,203,685,477,5807.
# 7) Long: Этот подтип показывает, что результирующее значение будет находиться в диапазоне от -2 147 483 648 до 2 147 483 647, то есть результат будет от любого значения в диапазоне от -2 147 483 648 до 2 147 483 647.
# 8) Single: Этот подтип показывает, что результирующее значение будет от любого значения от -3,402823E38 до -1,401298E-45 в случае отрицательных значений.
А для положительных значений результатом будет любое значение в диапазоне от 1.401298E-45 до 3.402823E38.
# 9) Double: Этот подтип указывает, что результирующее значение будет из любого значения в диапазоне от -1.79769313486232E308 до 4.94065645841247E-324 в случае отрицательных значений.
А для положительных значений результат будет из любого значения между 4.94065645841247E-324 до 1.79769313486232E308.
# 10) Дата (время): Этот подтип вернет число, которое будет представлять значение даты между 1 января 100 года и 31 декабря 9999
# 11) Строка: Этот подтип вернет переменную -длина строковое значение, длина которого может составлять примерно до 2 миллиардов символов.
# 12) Объект: Этот подтип возвращает объект.
# 13) Ошибка: Этот подтип вернет номер ошибки.
Как создать простой VBScript?
Для создания VBScript требуются только 2 вещи.
Это:
- Текстовые редакторы , такие как Notepad ++ или даже Notepad для написания кода VBScript.
- IE (желательно иметь IE6 или выше) для запуска кода VBScript.
Теперь давайте посмотрим несколько кодов VBScript для ясности, но перед этим важно знать, где можно вставить сценарии на HTML-страницу.
Куда вставлять скрипты на HTML-страницу?
VBScript дает вам возможность разместить код в любом из следующих разделов:
- Внутри тегов заголовка , то есть между и.
- В теле документа , то есть между тегами и .
Первый код VBScript в HTML:
Теперь давайте рассмотрим простой пример, чтобы понять, как код VBScript может быть написан внутри тегов HTML.
Тестирование навыков VBScript
Примечание : все, что заключено в квадратные скобки «document.write», будет отображаться как результат на странице дисплея.
Результат этой программы: , результат из приведенного выше уравнения равен 3
После завершения кода вы можете сохранить это в файл и дать имя файла как любое имя файла.html.
Чтобы запустить , просто откройте этот файл в IE.
Важно знать:
Мы только что видели реализацию кода VBScript в файле HTML. Однако VBScript в QTP не помещается внутри тегов HTML. Он сохраняется с расширением «.vbs» и выполняется механизмом выполнения QTP.
Чтобы понять практическую реализацию VBScript с точки зрения QTP, вы должны знать переменные, константы и т. Д., И я расскажу об этом в своих следующих уроках, а пока я просто хочу показать вам код VBScript с концепцией внешнего файла.
VBScript во внешнем файле:
переменная1 = 22 переменная2 = 21 вычитание = переменная1 - переменная2 document.write («вычитание двух чисел есть» и вычитание)
Чтобы получить доступ к этому коду из внешнего источника, сохраните этот код в текстовом файле с расширением «.vbs».
Как обрабатываются комментарии в VBScript
Считается хорошей практикой программирования включать комментарии в сценарии для лучшей читаемости и понимания.
Есть 2 способа обработки комментариев в сценарии VBScript:
# 1) Любой оператор, начинающийся с одинарной кавычки (‘), рассматривается как комментарий:
REM сделаем вычитание 2 чисел переменная1 = 11 переменная2 = 10 вычитание = переменная1 - переменная2 document.write («вычитание двух чисел есть» и вычитание)