прикладная математика. Vbscript для чайников


Урок VBScript №1: Знакомство с языком VBScript

Урок VBScript №1: Знакомство с языком VBScript

Опубликовал admin, Дата: Июль 12, 2015 , В рубрике: Уроки VBScript , 6 комментариев

Приветствую тебя, читатель моего блога. Я начинаю свою серию уроков по программированию VBScript этой ознакомительной статьёй. Вам предстоит узнать основы основ данного языка программирования.

VBScript — Это скриптовый язык программирования. Как и любой другой скриптовый язык VBScript урезан в своих возможностях. Но то, что он урезан ещё не говорит что он не интересен.

Вступление

В этом уроке мы узнаем:

  • Основные особенности VBScript.
  • Что такое переменные и с чем их едят.
  • Простейшая функция MsgBox.

Язык VBScript на мой взгляд простой и понятный даже для ничего незнающего школьника. Сценарии VBScript можно создавать в простом блокноте, что облегчает нам с вами задачу, так как не надо скачивать каких либо дополнительных программ. Однако я рекомендую скачать бесплатную программу Notepad++. Он очень удобен тем, что подсвечивает сам код и показывает номера строк, что очень пригодится при возникновении ошибки.

Так же надо знать ещё две вещи о VBScript:

  • Расширение файла *.vbs
  • В коде не учитывается регистр (большие или маленькие буквы)

Приступим…

Создаём текстовый документ и сохраняем его с расширением *.vbs (Тип файла: все файлы. К названию файла подставить .vbs). Дальше открываем получившийся файл при помощи блокнота или любой другой программы для работы с текстом, например Notepad++. Вставляем код ниже, сохраняем и запускаем двойным щелчком мыши:

'Урок VBScript №1 Rem Знакомство с языком VBScript 'file_1.vbs Dim a, b, c, d a = 10 b = 20 c = 40 d = "пробная строка" MsgBox a MsgBox b MsgBox c MsgBox d

'Урок VBScript №1

Rem Знакомство с языком VBScript

'file_1.vbs

Dim a, b, c, d

a = 10

b = 20

c = 40

d = "пробная строка"

MsgBox a

MsgBox b

MsgBox c

MsgBox d

Теперь разберём эту «головоломку» по частям.

Первые три строки — это комментарии. Они не как не влияют на работу сценария. Что бы оставлять комментарии используется ключевое слово «Rem» или единичная клавиша ‘. Комментарии можно оставлять в любом месте кода, но надо учитывать, что после объявления комментария всё содержимое строки, которое идёт дальше, учитываться не будет.

На пятой строке перечислены все переменные, которые мы с вами будем использовать (a, b, c, d). Они бывают явными и не явными, но об это я расскажу попозже. Переменные объявляются ключевым словом «Dim».

С седьмой по десятую строку мы назначаем значение переменных. В данном случае это три числа и строка (10, 20, 40, «пробная срока»). Прошу обратить внимание, что все строки заключаются в ковычки.

На двенадцатой строке мы выводим значение всех переменных при помощи функции MsgBox. В данном примере у нас вылезет окошко с числом 10, а после нажатия кнопки «ОК» вылезет окошко с числом 20 и т.д. .

На мой взгляд, всё понятно, но мне не нравится чересчур большое количество строк. Давайте сократим код. Заодно  я расскажу Вам про не явные переменные.

'Урок VBScript №1 Rem Знакомство с языком VBScript 'file_2.vbs Option Explicit Dim a, b, c, d a = 10 b = 20 c = 40 d = "пробная строка" f = 25 MsgBox a:MsgBox b:MsgBox c:MsgBox d

'Урок VBScript №1

Rem Знакомство с языком VBScript

'file_2.vbs

Option Explicit

Dim a, b, c, d

a = 10

b = 20

c = 40

d = "пробная строка"

f = 25

MsgBox a:MsgBox b:MsgBox c:MsgBox d

Итак, что мы видим? Наши три строки с функцией MsgBox превратились в одну. В данном случае язык VBScript позволяет прописать несколько операторов в одну строку используя двоеточие.

Теперь что касается не явных переменных. Такими являются все переменные которые не были назначены после ключевого слова «Dim». В данном случае таковой является переменная «f» на тринадцатой строке. Такие переменные не нарушают работу сценария, но если его код очень большой, то Вы можете попросту запутаться в своих переменных.

Для того что бы ни допустить этого, нам на помощь приходит оператор «Option Explicit» с пятой строки. Если данный оператор поставлен в вашем сценарии, то из-за не объявленных переменных будет выдавать ошибку, пока эту переменную не объявят после ключевого слова «Dim».

Так же я рекомендую писать значение всех переменных по возможности в одном месте и как можно выше к ключевому слову «Dim». Впрочем, я сам любитель пренебречь этим правилом =).

Вроде всё хорошо, но хочется чего то большего. Давайте выведем значение переменных одним окошком!

'Урок VBScript №1 Rem Знакомство с языком VBScript 'file_3.vbs Option Explicit Dim a, b, c, d, f a = 10 b = 20 c = 40 d = "пробная строка" f = 25 MsgBox a & b & c & d & f MsgBox a & vbTab & b & vbTab & c & vbTab & d & vbTab & f MsgBox a & vbCrLf & b & vbCrLf & c & vbCrLf & d & vbCrLf & f

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

'Урок VBScript №1

Rem Знакомство с языком VBScript

'file_3.vbs

Option Explicit

Dim a, b, c, d, f

a = 10

b = 20

c = 40

d = "пробная строка"

f = 25

MsgBox a & b & c & d & f

MsgBox a & vbTab & b & vbTab & c & vbTab & d & vbTab & f

MsgBox a & vbCrLf & b & vbCrLf & c & vbCrLf & d & vbCrLf & f

В данном примере у нас уже не выдаст ошибку, так как мы объявили переменную «f» после ключевого слова «Dim».

Теперь давайте рассмотрим три примера вывода значений переменных функцией MsgBox.

На пятнадцатой строке приведён пример где мы объединяем значение переменных при помощи знака «&». Значение переменных выведется одной строкой без пробелов. Думаю нам так не пойдёт, но это может пригодиться.

На шестнадцатой строке  показан пример где значения переменных будут выведены одной строкой и разделены Tab’ом при помощи константы «vbTab» и всё того же связующего знака «&».

На семнадцатой строке мы видим вывод значения каждой переменной с новой строки. В этом нам помогает константа «vbCrLf».

Эти три строки так же можно объединить в одну при помощи двоеточия. Подробнее о функции MsgBox и других видах диалоговых окон я расскажу в одном из следующих уроков.

Надеюсь эта статья помогла снять завесу тайны с языка VBScript и вы заинтересовались этим чудесным языком программирования. Ждите новых уроков в которых Вы узнаете ещё много нового и интересного. Удачи! =)

Теги

vbhack.ru

Visual basic script

Программирование на Visual Basic Script для опытных программистов особой сложности не представляет. Достаточно почитать документацию, чтобы понять некоторые особенности языка и узнать отличия между VBScript и Visual Basic, а также между VBScript и VBA. Однако полная документация имеется, в основном, на английском языке. Да и начинающему разобраться в ней будет непросто. Для начинающих рекомендую книгу Как стать программистом. И если вы окончательно решили взяться за VBScript, то представленная ниже книга вам в этом поможет.

Где используется VBScript? Применений довольно много. Подробно об этом вы прочитаете в книге. А если коротко, то используется Visual Basic Script для написания сценариев, которые можно сохранить в файл и затем с их помощью выполнять различные рутинные процедуры. Например, очистку диска от ненужных файлов.

Кроме этого сценарии можно встраивать в веб-страницы. Поскольку VBScript является, пожалуй, самым простым в освоении языком сценариев, то он широко используется в различных приложениях, таких как SCADA-системы. Например, SCADA-система Reliance использует именно язык Visual Basic Script, который дополнен некоторыми специфическими для данной системы функциями.

Ниже приведено содержание книги. Некоторые разделы можно посмотреть непосредственно на этом сайте. Книга пока не закончена, поэтому рекомендую периодически заглядывать на эту страницу, чтобы получить обновлённую версию.

VBScript для чайников

  • ПРЕДИСЛОВИЕ
  • ОБЩИЕ СВЕДЕНИЯ
    • Что такое VBScript?
    • Как начать?
    • Добавление кода VBScript в HTML-страницу
  • УРОКИ VBSCRIPT
    • Основы VBScript
      • Типы данных
      • Переменные VBScript
      • Константы VBScript
      • Операторы VBScript
      • Использование условных операторов
      • Использование циклов
      • Подпрограммы VBScript
      • Соглашения VBScript
    • Использование VBScript в Internet Explorer
  • ИСПОЛЬЗОВАНИЕ ОБЪЕКТА FILESYSTEMOBJECT
  • СПРАВОЧНЫЕ МАТЕРИАЛЫ
    • Функции VBScript
      • Функции VBScript
      • Функции VBA, которых нет в VBScript
      • Функции VBScript, которых нет в VBA
      • Функции Scripting Run-Time Library Reference Features
    • Список ключевых слов в алфавитном порядке
    • Константы
      • Константы VBScript
      • Цветовые константы
      • Константы сравнения
      • Константы даты и времени
      • Константы форматирования даты
      • Константы разные
      • Константы MsgBox
      • Строковые константы
      • Константы трёх состояний
      • Константы типов переменных
    • События
      • Событие Initialize
      • Событие Terminate
    • Функции
    • Методы
    • Объекты
      • Объект Class
      • Объект Dictionary
        • Свойства объекта Dictionary
        • Методы объекта Dictionary
      • Объект Err
        • Свойства объекта Err
        • Методы объекта Err
      • Объект FileSystemObject
        • Свойства объекта FileSystemObject
        • Методы объекта FileSystemObject
      • Объект Drive
        • Свойства объекта Drive
      • Объект File
        • Свойства объекта File
        • Методы объекта File
      • Объект TextStream
        • Свойства объекта TextStream
        • Методы объекта TextStream
      • Объект Match
        • Свойства объекта Match
      • Объект RegExp
        • Свойства объекта RegExp
        • Методы объекта RegExp

av-mag.ru

VBScript: синтаксис vbs сценариев | scriptcoding.ru

В этом начальном уроке, мы изучим синтаксис vbscript языка. Синтаксис языка vbscript является таким же как и в языке Visual Basic и фактически, является подмножеством данного языка программирования. Основной упор в использовании vbscript – это возможность написания сценариев (расширение vbs) с открытым кодом для платформы Windows. Пользователю не нужно прибегать к установке дополнительного программного обеспечения, так как все сценарии выполняются под управлением сервера сценариев Windows Script Host.

И так, давайте рассмотрим базовый синтаксис vbscipt и его возможности.

  • Комментарии – для комментирования строк кода можно использовать ключевое слово REM, или одинарную кавычку (').
  • Строки кода – что бы произвести перенос одной строки на несколько, используется символ подчёркивания.
  • Переменные – для объявления переменных используется ключевое слово Dim. Более детально, работу с ними я рассмотрел в статье "Урок 2 по VBScript: Переменные"

Можно прописать несколько операторов в одну строчку, для этого используется знак двоеточия (:). Сам язык нечувствителен к регистру символов.

Хорошо, давайте рассмотрим синтаксис языка vbscript на таком примере:

'**************************************** REM Общий синтаксис vbscript REM primer_1.vbs '**************************************** dim a, b, c   a = "строка" b = 100 c = 22.5   MsgBox a:MsgBox b:MsgBox c

Видим, что тут, мы вначале прописали комментарии, далее объявили три переменные. Как видим, язык vbscript не требует назначения типа данных (более детально, работу с типами данных я рассмотрел в статье – "Урок 3 по VBScript: Типы данных"). В конце, для вывода данных мы использовали функцию MsgBox, в данном случае она прописана в упрощенном варианте. Давайте рассмотрим ее полный синтаксис:

MsgBox(prompt[, buttons] [, title ][, helpfile, context ] ) – видим, что тут, функции передаются пять параметров, последние два мы рассматривать не будет, так как они не являются актуальными и практически не применяются.

  • prompt – собственно, сообщение, которое надо вывести
  • buttons – позволяет задать дополнительные кнопки, их значения указываются через константы
  • title – заголовок окна

Работу с данной функцией я более детально рассмотрел в статье "Создание диалоговых окон".

Язык vbscript предоставляют также функции для работы со строками и датой, а также, ряд математических функций.

Конечно, синтаксис vbscript позволяет пользователю создавать собственные процедуры и функции. Для определения процедуры, т. е. подпрограммы, которая не возвращает никакого значения, в VBScript используется конструкция Sub ... End Sub. После ключевого слова Sub идёт имя процедуры, а в круглых скобках указывается список её пара­метров, например:

Sub MyProcedure(Param1, Param2)Строки кодаEnd Sub

Если процедура не имеет параметров, то в скобках после имени ничего ука­зывать не нужно:

Sub MyProcedure() …

End Sub

Вызывать процедуру из сценария можно двумя способами. Во-первых, мож­но просто написать имя и указать через пробел список передаваемых параметров, например: MyProcedure 3,10. Во-вторых, можно использовать специальный оператор Call, при этом спи­сок параметров обязательно должен быть заключен в круглые скобки: Call MyProcedure(3,10).

Скачать архив с примерами

Для определения функции, т. е. подпрограммы, которая возвращает опреде­ленное значение, применяется конструкция Function ... End Function. Как и при описании процедур, после названия функции в круглых скобках указывается список её параметров, например:

Function MyFunction(Param1, Param2) … End Function

Для того чтобы возвратить из функции какое-либо значение, нужно внутри неё присвоить это значение переменной, название которой совпадает с именем функции:

Function MyFunction(Param1, Param2)Dim SumSum = Paraml+Param2MyFunction = SumEnd Function

Если возвращаемое функцией значение не нужно присваивать никакой пе­ременной, то функция вызывается так же, как и процедура — пишется имя этой функции и через пробел указывается список ее аргументов: MyFunction 3,5

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

Вот простой пример синтаксиса vbscript для использования собственных процедур и функций:

'**************************************** REM Общий синтаксис vbscript REM primer_2.vbs '**************************************** dim a, b, c ' пользовательская функция Function my_fun(a, b)      Dim Summ      Summ = a+b      my_fun = Summ End Function   ' пользовательская процедура Sub my_sub(a, b)      Dim Summ      Summ = a+b      MsgBox Summ End Sub   MsgBox my_fun(5,10) Call my_sub(100,200)

Помимо процедур и функций, можно создавать собственные массивы (Урок 9 по VBScript: Массивы) и классы (Урок 8 по VBScript: Объекты и классы)

Ну что же, вдобавок, хотелось бы упомянуть две очень полезные функции:

  • Hex(number ) – функция позволяет получить 16-ричное значение для числа number
  • Oct(number) - функция позволяет получить 8-ричное значение для числа number

Смотрим на третий пример:

'**************************************** REM Общий синтаксис vbscript REM primer_3.vbs '**************************************** dim my_var   my_var = 200   MsgBox Hex(my_var):MsgBox Oct(my_var)

scriptcoding.ru

Основы программирования в 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 • Просмотров [ 14252 ]

primat.org

Урок VBScript №8: Математические функции. Функции для работы с числами

Урок VBScript №8: Математические функции. Функции для работы с числами

Опубликовал admin, Дата: Сентябрь 4, 2015 , В рубрике: Уроки VBScript , 4 комментария

В этой статье я расскажу вам про математические функции языка Visual Basic Script, а так же про функции для работы с числами. Данные функции полезны при математических вычислениях: нахождении синуса или косинуса и т.п.. Так же они позволяют получить случайное число. Давайте рассмотрим их подробней.

 

 

Математические функции VBS

Abs — Позволяет получить абсолютное число. Проще говоря — модуль.

Atn — Вернёт арктангенс числа.

Cos — возвращает косинус угла, указанный в радианах. Вернёт промежуток от -1 до 1.

Sin — вернёт синус угла, который мы указали в радианах. Вернёт промежуток от -1 до 1.

Tan — возвращает тангенс угла. Значение угла указывать в радианах.

Exp — возвращает нам экспоненту, возведённую в указанное число.

Log — получаем натуральный логарифм из указанного числа. Число должно быть больше 0.

Sqr — вернёт квадратный корень указанного числа.

Смотрим пример:

'Урок VBScript №8: 'Математические функции. Функции для работы с числами 'file_1.vbs dim a, b, c, d, i, f, g, h, m, n a = "Модуль числа 10: " & Abs(10) b = "Модуль числа -10: " & Abs(-10) c = "Арктангенс числа 10: " & Atn(10) d = "Косинус угла 10 радиан: " & Cos(10) i = "Синус угла 10 радиан: " & Sin(10) f = "Тангенс угла 10 радиан: " & Tan(10) g = "Экспонента возведённая в 2: " & exp(2) h = "Логарифм из 15: " & log(15) m = "Десятичный логарифм из 15: " & log(15)/log(10) n = "Квадратный корень 15: " & Sqr(15) o = "Квадратный корень 0: " & Sqr(0) MsgBox a & vbCrLf & b & vbCrLf & c & vbCrLf & d & vbCrLf & i & vbCrLf & f & vbCrLf &_ g & vbCrLf & h & vbCrLf & m & vbCrLf & n & vbCrLf & o

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

'Урок VBScript №8:

'Математические функции. Функции для работы с числами

'file_1.vbs

 

dim a, b, c, d, i, f, g, h, m, n

 

a = "Модуль числа 10: " & Abs(10)

b = "Модуль числа -10: " & Abs(-10)

c = "Арктангенс числа 10: " & Atn(10)

d = "Косинус угла 10 радиан: " & Cos(10)

i = "Синус угла 10 радиан: " & Sin(10)

f = "Тангенс угла 10 радиан: " & Tan(10)

g = "Экспонента возведённая в 2: " & exp(2)

h = "Логарифм из 15: " & log(15)

m = "Десятичный логарифм из 15: " & log(15)/log(10)

n = "Квадратный корень 15: " & Sqr(15)

o = "Квадратный корень 0: " & Sqr(0)

 

MsgBox a & vbCrLf & b & vbCrLf & c & vbCrLf & d & vbCrLf & i & vbCrLf & f & vbCrLf &_

g & vbCrLf & h & vbCrLf & m & vbCrLf & n & vbCrLf & o

В данном примере я собрал все вышеупомянутые функции. Дабы мне не мешала длинная строка с MsgBox в конце, я перенёс её часть на следующую строку при помощи «_». Теперь идём дальше.

Randomize — инструкция-генератор псевдослучайных чисел. Имеет один необязательный элемент — опорное число для инициализации датчика случайных чисел функции Rnd. Указывается в круглых скобках. Если оно не указано, то опорное число берётся из функции Timer, о которой мы уже узнали из статьи про функции для работы с датой и временем.Rnd — Вернёт псевдослучайное число. Имеет необязательный аргумент, число X, в круглых скобках:

  • x < 0 — Если у Randomize указан аргумент, то произойдёт повтор последовательности псевдослучайных чисел, сгенерированных ранее. В противном случае будет одно и то же число.
  • x = 0 — Генерируется одно и то же число.
  • x > 0 или отсутствует — Следующее случайное число в последовательности.

'Урок VBScript №8: 'Математические функции. Функции для работы с числами 'file_2.vbs dim a, b, c, d Randomize a = (Int(1 + (Rnd(3) * 10))) '(Int(минимум + (Rnd() * максимум))) b = Int((10 - 1 + 1) * Rnd + 1) ' Int((максимум - минимум + 1) * Rnd + минимум) c = Int((10 * Rnd) + 1) ' Int((максимум * Rnd) + минимум) d = Rnd(10) MsgBox a & vbCrlf & b & vbCrlf & c & vbCrlf & d

'Урок VBScript №8:

'Математические функции. Функции для работы с числами

'file_2.vbs

 

dim a, b, c, d

 

Randomize

a = (Int(1 + (Rnd(3) * 10))) '(Int(минимум + (Rnd() * максимум)))

b = Int((10 - 1 + 1) * Rnd + 1) ' Int((максимум - минимум + 1) * Rnd + минимум)

c = Int((10 * Rnd) + 1) ' Int((максимум * Rnd) + минимум)

d = Rnd(10)

 

MsgBox a & vbCrlf & b & vbCrlf & c & vbCrlf & d

В данном примере  я привёл несколько вариантов генерации чисел от 1 до 10 (кроме варианта d). В данном случае нам помогает функция Int. Её мы рассмотрим чуть ниже.

Обязательно надо указывать инструкцию Randomize иначе будет генерироваться одно и то же число.

Int — вернёт целую часть числа.

Fix — то же самое что и Int, но с небольшой разницей.

Смотрим пример:

'Урок VBScript №8: 'Математические функции. Функции для работы с числами 'file_3.vbs dim a, b, c, d a = Int(10.3) b = Fix(10.3) c = Int(-10.3) d = Fix(-10.3) MsgBox a & vbCrlf & b & vbCrlf & c & vbCrlf & d

'Урок VBScript №8:

'Математические функции. Функции для работы с числами

'file_3.vbs

 

dim a, b, c, d

 

a = Int(10.3)

b = Fix(10.3)

c = Int(-10.3)

d = Fix(-10.3)

MsgBox a & vbCrlf & b & vbCrlf & c & vbCrlf & d

Таким образом разница между Int и Fix проявляется только при отрицательных значения. Fix возвращает ближайшее меньшее по модулю число, а Int ближайшее большее по модулю число.

Функции VBS для работы с числами

Теперь давайте рассмотрим функции VBScript для работы с числами.

 

FormatNumber — вернёт нам выражение отформатированное как число.Имеет данный синтаксис: FormatNumber(Expression[, Numdigits[, Leadingdigit[, Useparens [, Groupdigits]]]])

  • Expression — Единственный обязательный параметр. Само число.
  • Numdigits — количество знаков после десятичной точки (запятой). Если -1, то по параметрам системы.
  • Leadingdigit — определяет, будет ли отображаться ноль слева от запятой, в дробных выражениях меньше единицы (00,1)
  • Useparens — нужно ли заключать отрицательные значения в круглые скобки.
  • Groupdigits — нужна ли группировка цифр в числе.

Последние три параметра могут принимать такие значения:

  • vbUseDefault или -2 — По умолчанию системы.
  • vbTrue или -1 — Правда.
  • vbFalse или 0 — Ложь.

'Урок VBScript №8: 'Математические функции. Функции для работы с числами 'file_4.vbs dim a, b, c a = FormatNumber(-00.13,3,-1,-1,vbTrue) b = FormatNumber(-00.13,3,-1,0,0) c = FormatNumber(-00.13) MsgBox a & vbCrlf & b & vbCrlf & c

'Урок VBScript №8:

'Математические функции. Функции для работы с числами

'file_4.vbs

 

dim a, b, c

 

a = FormatNumber(-00.13,3,-1,-1,vbTrue)

b = FormatNumber(-00.13,3,-1,0,0)

c = FormatNumber(-00.13)

MsgBox a & vbCrlf & b & vbCrlf & c

FormatCurrency — форматирует число как денежную строку с добавление денежного знака.

FormatPercent — возвращает отформатированное число как проценты. Умножает на 100 и добавляет знак %.

Обе функции имеют такие параметры, как и FormatNumber.

'Урок VBScript №8: 'Математические функции. Функции для работы с числами 'file_5.vbs dim a, b a = FormatCurrency(1000,3,-1,-1) b = FormatPercent(100,0,-1,-1) MsgBox a & vbCrlf & b

'Урок VBScript №8:

'Математические функции. Функции для работы с числами

'file_5.vbs

 

dim a, b

 

a = FormatCurrency(1000,3,-1,-1)

b = FormatPercent(100,0,-1,-1)

 

MsgBox a & vbCrlf & b

Hex — возвращает шестнадцатеричное значение числа.

Oct — вернёт восьмеричное значение числа.

'Урок VBScript №8: 'Математические функции. Функции для работы с числами 'file_6.vbs dim a, b a = Hex(1000) b = Oct(1000) MsgBox a & vbCrlf

'Урок VBScript №8:

'Математические функции. Функции для работы с числами

'file_6.vbs

 

dim a, b

 

a = Hex(1000)

b = Oct(1000)

 

MsgBox a & vbCrlf

IsNumeric — возвращает True, если указанная переменная является числом и False в противном случае.

'Урок VBScript №8: 'Математические функции. Функции для работы с числами 'file_7.vbs Dim a a = 22 If IsNumeric(a) then MsgBox "Переменная является числом!"

'Урок VBScript №8:

'Математические функции. Функции для работы с числами

'file_7.vbs

 

Dim a

a = 22

If IsNumeric(a) then MsgBox "Переменная является числом!"

 

На этом у меня всё. До новых встреч! Надеюсь, эта статья стала для кого ни будь полезной.

 

Теги

vbhack.ru

Урок VBScript №18: Объект WScript

Урок VBScript №18: Объект WScript

Опубликовал admin, Дата: Октябрь 27, 2015 , В рубрике: Уроки VBScript , 3 комментария

Объект WScript является главным в Windows Script Host и позволяет подключать остальные его компоненты. Данный объект не нужно создавать или куда то прописывать, он создаётся автоматически, сервером сценариев (CScript.exe или WScript.exe). Благодаря этому объекту мы можем получать информацию о запущенном сценарии и о самом WSH. Так же мы можем устанавливать время работы нашего сценария. Будет интересно.

 

[1] Свойства объекта WScript

[1.1] Timeout — устанавливает время в секундах, по истечению которых, скрипт будет остановлен.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_1.vbs '******************************************************** WScript.Timeout = 10 Do Loop

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_1.vbs

'********************************************************

WScript.Timeout = 10

Do

Loop

В данном примере мы запускаем бесконечный цикл Do … Loop на 10 секунд.

[1.2] Name — Вернёт наименование сервера сценариев.

[1.3] FullName — Вернёт полный путь к исполняемому файлу сервера сценариев.

[1.4] Path — Вернёт полный путь к каталогу исполняемого файла сервера сценариев.

[1.5] Version — Вернёт версию сервера сценариев.

[1.6] BuildVersion — Номер сборки сервера сценариев.

[1.7] ScriptName — Имя запущенного файла сценария.

[1.8] ScriptFullName — Полный путь к запущенному файлу.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_2.vbs '******************************************************** MsgBox WScript.Name & vbCrlf & WScript.FullName & vbCrlf & WScript.Path & vbCrlf & _ WScript.Version & vbCrlf & WScript.BuildVersion & vbCrlf & WScript.ScriptName & vbCrlf & WScript.ScriptFullName

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_2.vbs

'********************************************************

MsgBox WScript.Name & vbCrlf & WScript.FullName & vbCrlf & WScript.Path & vbCrlf & _

WScript.Version & vbCrlf & WScript.BuildVersion & vbCrlf & WScript.ScriptName & vbCrlf & WScript.ScriptFullName

[1.9] StdIn — Вернёт объект «TextStream», соответствующий стандартному входному потоку. Доступен, если скрипт запущен в командной строке (CScript.exe).

[1.10] StdOut — Вернёт объект «TextStream», соответствующий стандартному выходному потоку. Доступен, если скрипт запущен в командной строке (CScript.exe).

[1.11] StdErr — Вернёт объект «TextStream», соответствующий стандартному потоку ошибок. Доступен, если скрипт запущен в командной строке (CScript.exe).

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_3.vbs '******************************************************** WScript.StdErr.Write "StdErr!" & vbCrlf WScript.StdOut.Write "Ввдеите строку: " Res = WScript.StdIn.ReadLine MsgBox Res WScript.StdOut.Write "Ввдеите строку: " Res = WScript.StdIn.ReadLine MsgBox Res

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_3.vbs

'********************************************************

WScript.StdErr.Write "StdErr!" & vbCrlf

 

WScript.StdOut.Write "Ввдеите строку: "

Res = WScript.StdIn.ReadLine

MsgBox Res

 

WScript.StdOut.Write "Ввдеите строку: "

Res = WScript.StdIn.ReadLine

MsgBox Res

Что бы запустить данный пример, вам надо нажать на файл скрипта правой кнопкой мыши и выбрать — «Открыть в командной строке».

[1.12] Interactive — Возвращает или устанавливает режим запуска скрипта. Разрешён (True) диалог с пользователем или нет (False).

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_4.vbs '******************************************************** MsgBox WScript.Interactive WScript.Interactive = False MsgBox WScript.Interactive

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_4.vbs

'********************************************************

MsgBox WScript.Interactive

WScript.Interactive = False

MsgBox WScript.Interactive

[1.13] Arguments — Вернёт объект «WshArguments» — коллекция параметров, с которыми был запущен скрипт.

Для запуска демонстрации данного примера нам понадобятся два файла сценария. Первый файл будет запускать второй скрипт с примером и установит параметры.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_5_1.vbs '******************************************************** Set WshShell = CreateObject("WScript.Shell") WshShell.Run "wscript.exe file_5_2.vbs /param1 /param2"

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_5_1.vbs

'********************************************************

Set WshShell = CreateObject("WScript.Shell")

WshShell.Run "wscript.exe file_5_2.vbs /param1 /param2"

Здесь мы использовали объект «WshShell» или просто «Shell». О нём мы поговорим в других уроках.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_5_2.vbs '******************************************************** For Each Argument In WScript.Arguments MsgBox Argument Next

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_5_2.vbs

'********************************************************

For Each Argument In WScript.Arguments

MsgBox Argument

Next

Стоит отметить, что если вы перетащите какой либо файл или папку на скрипт с примером, то он вернёт полный путь к этому объекту. Что, несомненно здорово.

Подробней об объекте «WshArguments» я расскажу ниже, после методов объекта «WScript».

[2] Методы объекта WScript

[2.1] Sleep — Приостанавливает выполнение скрипта на указанное количество миллисекунд.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_6.vbs '******************************************************** MsgBox "Sleep" WScript.Sleep 10000 MsgBox "Sleep"

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_6.vbs

'********************************************************

MsgBox "Sleep"

WScript.Sleep 10000

MsgBox "Sleep"

[2.2] Quit -Завершение скрипта с указанным кодом возврата. Код возврата указывать не обязательно.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_7.vbs '******************************************************** MsgBox "Quit" WScript.Quit 2 MsgBox "Quit"

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_7.vbs

'********************************************************

MsgBox "Quit"

WScript.Quit 2

MsgBox "Quit"

[2.3] Echo — Аналог функции MsgBox, но с меньшими возможностями. Данный метод так же доступен в JSCRIPT в отличие от функции MsgBox.

Синтаксис: Echo(<Arg1>,<Arg2>,…,<ArgN>)

Указанные параметры будут разделены пробелом.

[2.4] CreateObject — создаёт программный объект автоматизации.

Синтаксис: CreateObject(ProgID[, Prefix)

  • ProgID — Программный идентификатор объекта (ProgID).
  • Prefix — Префикс функций-обработчиков событий. Нужен, если указанный объект позволяет производить обработку событий. Если префикс «Pref», а событие называется «Sob», то будет вызвана функция «Pref_Sob».

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_8.vbs '******************************************************** Set Network = WScript.CreateObject("WScript.Network") MsgBox Network.ComputerName

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_8.vbs

'********************************************************

Set Network = WScript.CreateObject("WScript.Network")

MsgBox Network.ComputerName

[2.5] ConnectObject — Устанавливает соединение с объектом автоматизации для обработки его событий.

Синтаксис: ConnectObject(Obj, Prefix)

  • Obj — Объект.
  • Prefix — смотрим выше.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_10.vbs '******************************************************** Set Word = CreateObject("Word.Application") Set Document = Word.Documents.Add Word.Visible = True WScript.ConnectObject Document, "Word_" boolDone = False Do WScript.Sleep 100 Loop Until boolDone Sub Word_Close boolDone = True WScript.Echo "Сейчас произодёт закрытие Word" WScript.DisconnectObject Document Set Document = Nothing End Sub

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_10.vbs

'********************************************************

Set Word = CreateObject("Word.Application")

Set Document = Word.Documents.Add

Word.Visible = True

WScript.ConnectObject Document, "Word_"

 

boolDone = False

Do

    WScript.Sleep 100

Loop Until boolDone

 

Sub Word_Close

    boolDone = True

    WScript.Echo "Сейчас произодёт закрытие Word"

    WScript.DisconnectObject Document

    Set Document = Nothing

End Sub

Данный пример открывает Word. Когда вы его закрываете, вылезает наше сообщение.

[2.6] DisconnectObject — закрывает соединение с объектом автоматизации. Пример показан в предыдущем методе.

[2.7] GetObject — создаёт программный объект автоматизации. Очень похож на CreateObject, но здесь можно напрямую задавать имя файла и путь по которому находится библиотека запуска файла.

Синтаксис: GetObject(Pathname [,ProgID][, Prefix])

  • Pathname — Полный путь к файлу, содержащему объект.
  • ProgID и Prefix смотрите выше.

[3] Объект-коллекция WshArguments

Создание объекта WshArguments:

Set WshArg = WScript.Arguments

Set WshArg = WScript.Arguments

Прежде чем описывать свойства и методы, я напомню, что для запуска примера нам понадобится ещё один скрипт.

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_11.vbs '******************************************************** Set WshShell = CreateObject("WScript.Shell") WshShell.Run "wscript.exe test.vbs /Город:""Нижний новгород"" параметр1 параметр2"

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_11.vbs

'********************************************************

Set WshShell = CreateObject("WScript.Shell")

WshShell.Run "wscript.exe test.vbs /Город:""Нижний новгород"" параметр1 параметр2"

Не забудьте менять название файла в последней строке.

[4] Свойства объекта-коллекции WshArguments

[4.1] Item — Возвращает значение указанного элемента коллекции. Отчёт начинается с нуля.

[4.2] Length — Количество переданных аргументов скрипту (число элементов коллекции)

[4.3] Named — Вернёт коллекцию только из именных параметров.

[4.4] Unnamed — Вернёт коллекцию только из не именных параметров.

 

'******************************************************** 'Урок VBScript №18: 'Объект WScript 'file_12.vbs '******************************************************** Dim WshArg, i, List Set WshArg = WScript.Arguments Set Named = WScript.Arguments.Named Set Unnamed = WScript.Arguments.Unnamed i=0 Do Until i=WshArg.Length List = List & vbCrlf & WshArg.Item(i) i=i+1 Loop MsgBox "Переданные параметры:" & vbCrlf & List If Named.Exists("Город") then MsgBox "Именной параметр: " & Named.Item("Город") & vbCrlf & "Всего их: " & Named.Count i=0 List = "" Do Until i=Unnamed.Count List = List & vbCrlf & Unnamed.Item(i) & " или " & Unnamed(i) i=i+1 Loop MsgBox "Переданные безымянные параметры:" & vbCrlf & List

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

'********************************************************

'Урок VBScript №18:

'Объект WScript

'file_12.vbs

'********************************************************

Dim WshArg, i, List

Set WshArg = WScript.Arguments

Set Named = WScript.Arguments.Named

Set Unnamed = WScript.Arguments.Unnamed

i=0

Do Until i=WshArg.Length

    List = List & vbCrlf & WshArg.Item(i)

i=i+1

Loop

MsgBox "Переданные параметры:" & vbCrlf & List

 

If Named.Exists("Город") then MsgBox "Именной параметр: " & Named.Item("Город") & vbCrlf & "Всего их: " & Named.Count

 

i=0

List = ""

Do Until i=Unnamed.Count

    List = List & vbCrlf & Unnamed.Item(i) & " или " & Unnamed(i)

i=i+1

Loop

MsgBox "Переданные безымянные параметры:" & vbCrlf & List

На мой взгляд всё понятно.

[5] Методы объекта-коллекции WshArguments

[5.1] Count — Тоже что и свойство Length.

[5.2] ShowUsage — Возвращает информацию о запущенном сценарии (описание аргументов, пример запуска). Имеет смысл только при использовании WSH-сценариев с разметкой XML.

На этом данная тема заканчивается. До встречи!

Теги

vbhack.ru

VBScript для начинающих | VBScript

Опубликовано: 4 фев 2012 в 12:45

Автор: Dave Child  Перевод: freeeeez 

VBScript — один из языков, используемых для написания ASP страниц. ASP (Active Server Pages) скрипты работают на IIS серверах (или на Apache серверах, используя ChiliASP). И IIS и ASP разработаны компанией Microsoft. При этом, ASP страницы могут быть написаны на одном из нескольких скриптовых языков, наиболее распространенным из которых является VBScript. ASP скрипты исполняются на сервере, что позволяет взаимодействовать с базами данных, обрабатывать входные данные и прочее. Функциональные возможности ASP скриптов сравнимы с Perl и PHP, к тому же, как и PHP, их не надо запускать в CGI-BIN. Есть несколько версий ASP, текущая из которых ASP 3.0.

VBScript содержит семь встроенных объектов, с которыми вы будете работать при написании ASP страниц:

  • Application
  • ASPError
  • ObjectContext
  • Request
  • Response
  • Server
  • Session
Так как это только введение в язык, разберем только объект Response. Данный объект отвечает за отправку информации пользователю с сервера. Каждый раз, когда вы пишете что-то на страницу с помощью VBScript, вы будете использовать объект Response.

ASP страницы имеют расширение ".asp", например "index.asp". Страницы, которые имеют данное расширение, при правильной настройке сервера, будут обрабатываться движком ASP, прежде чем возвращаться пользователю. Данные между тегами <% и %> и есть код, обрабатываемых движком.

Наконец, мы подошли к написанию своего первого скрипта. Как и во многих других языках, первое, что вы научитесь делать с ASP, это вывод на страницу знаменитой строки "Hello World!". "Строка" является общим названием для текстовых данных.

<html> <body> <% Response.Write ("Hello World!") %> </ Body> </ Html> Скопируйте код в текстовый редактор и сохраните его как "vbscript101.asp". Загрузите полученый скрипт на сервер, который поддерживает ASP. При загрузке страницы страницы в браузере, вы увидите текст "Hello World!". Если нет, то данный сервер не поддерживает ASP.

Мы сделали нормальную HTML страницу, используя движок ASP для написания текста. Хорошее начало, но это еще не самый полезная функция языка. Далее мы узнаем, как использовать переменные.

Переменные в VBScript просты в использовании, однако могут ввести вас в заблуждение. Чтобы грамотно писать код, вы должны называть свои переменные так, чтобы сразу было видно к какому типу они относяться. Например, переменная, которая содержит имя может быть названа "strName". Здесь "str" говорит о том, что в переменной содержиться строка или текст, а "Name", что текст этот — имя. Переменную года рождения можно назвать "intYear", где "int" говорит о числовом значении переменной.

Чтобы использовать переменную в скрипте, вам для начала нужно ее объявить, а затем присвоить ей какое-либо значение. Напишем:

<html> <body> <% dim strHelloWorld //объявление переменной strHelloWorld = "Hello World, Again!" //присвоение значения Response.Write(strHelloWorld) //вывод на страницу %> </body> </html> Обратите внимание, что при использовании Response.Write вы не должны ставить кавычки внутри скобок. Иначе обработчик сценария примет это за текст и выведет на экран "strHelloWorld", а не текст, который вы присвоили переменной.

С обучением покончено, теперь мы попробуем написать более сложный скрипт. На этот раз мы собираемся выводить на экран текст, в зависимости от времени суток.

<html> <body> <% dim intHourOfDay intHourOfDay = hour(now()) if intHourOfDay < 12 then Response.Write("Good Morning World!<br><br>The hour of the day is ") & intHourOfDay else Response.Write("Good Afternoon World!<br><br>The hour of the day is ") & intHourOfDay end if %> </body> </html> Начинаем с объявления переменной, intHourOfDay, где "int" напоминает нам, что в дальнейшем эта переменная будет содержать число, а "HourOfDay" говорит о том, что число это — текущий час дня. Далее мы присваиваем переменной текущее время с помощью функции now(), а текущий час с помощью hour(). На данном этапе функция "intHourOfDay" будет содержать текущий час дня.

Затем мы проверяем это значение. Если оно меньше 12, мы знаем, что сейчас утро и напишем соответствующее приветствие, а иначе другое. End if в конце конструкции говорит о завершении разветвления.

Один важный момент. Время сервера может отличаться от вашего местного времени. Но тем не менее вы должны увидить приветствие, а через строку текущий час дня.

Поздравляю! Вы сделали свои первые шаги по интерактивному программированию на ASP.

Хотелось бы добавить пару слов о страховке. Сам недавно летал в Болгарию и оформлял страховой полис на сайте Aviabilet.ru. Страхование выезжающих за рубеж проводиться в течение 2-3 минут. После заполнения формы заказа и оплаты, на почту приходит электронная версия страховки, которую нужно распечатать и предоставить в посольство при получении визы. Никогда не поздно застраховаться. Удачного отдыха!

7 038 просмотров

www.securityscripts.ru