Welcome to Scripting Games 2009!

В этом году Microsoft Scripting Games пройдут летом. Scripting Games – это отличная возможность разобраться с VBScipt и/или Power Shell’ом для начинающих и прокачать свои скилы для продвинутых скриптеров. В этом году игры начнутся 15 июня.

Участникам предлагается решить 10 задач на одном из двух языков (или на обоих сразу). Есть два уровня сложности: beginner и advanced. Участвовать можно сразу в обоих уровнях. Итого можно написать 40 скриптов (20 на VBScript и 20 на Power Shell). Все задания занимательные и полезные. Решать их интересно. В этом году можно будет просмотреть скрипты других участников, что не может не радовать :)

Тем, кто успешно справится с заданиями, могут достаться призы. Какие именно – пока не очень ясно. Подробнее можно посмотреть здесь. В прошлом году всем участникам высылали сертификаты и случайным образом разыгрывали дистрибутивы MS Vista, Sapien PrimalScript и пр.

Короче, всем кто интересуется VBScript и Power Shell настоятельно рекомендую участвовать :)

Как можно автоматизировать проверку инсталляции

Иногда приходится довольно часто и тщательно проверять установку продукта. Чтобы это не занимало много времени, желательно эту процедуру автоматизировать. Сразу оговорюсь, я расскажу, как можно проверить, что все файлы и ключи реестра находятся на своих местах (а не непосредство сам мастер установки). Прочтите эту запись до конца »

Как растабулировать xml-документ

Если создавать xml-документ с помощью Microsoft.XMLDOM, то в текстовом виде файл этот почему-то записывается в одну строку. Вобщем-то, если работать с файлом программно или смотреть его с помощью, например, Internet Explorer, то проблем не возникает.  Но вот просматривать/редактировать такой файл с помощью текстового редактора страшно неудобно, особенно если хочется быстро поменять какой-то параметр в файле на стенде, где не стоит никаких специальных тулов. Следущая функция на VBScript умеет делать из однострочного xml-документа нормальный, со всеми нужными отступами. Прочтите эту запись до конца »

Как из скрипта запустить Windows-службу с параметром

Как-то раз мне понадобилось запустить из vbs-скрипта службу с параметром. Долго искал как это сделать, нашел только один способ. Есть такая полезная штука – Windows Server 2003 Resource Kit Tools. Это набор различных утилит для администрирования. В том числе там есть тула SC.exe.

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

Так вот, это тула много чего умеет делать со службами:

  • Запускать/останавливать;
  • Получать состояние службы;
  • Удалять службы;
  • Получать зависимости службы и другие параметры.

Синтаксис у нее следующий:

sc <сервер> [команда] [имя службы] <параметр1> <параметр2>...

Чтобы запустить службу с параметром, нужно выполнить следующую команду:

sc.exe start MySrv MyParam

Где MySrv – имя службы (которое не Display Name, а Service Name), MyParam – параметр службы.

Собственно, для запуска из скрипта можно использовать следующий код:

Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim objSc
Set objSc = WshShell.Exec("sc.exe start MySrv MyParam")
Do While True
    If objSc.Status = 1 Then
        Exit Do
    Else
        WScript.Sleep 1000
    End If
Loop
If objSc.ExitCode <> 0 Then
    Wscript.Echo "Cannot start service 'MyService'" & _
        "sc.exe exit code = " & objSc.ExitCode
    Wscript.Quit 2
End If

PS. В этом же Resource Kit есть утилита Sleep.exe, которая просто умеет «засыпать». Ее полезно использовать в bat-файлах, если нужно приостановить выполнение команд.

Генерация xml-документов с помощью VBScript

Многие програмы хранят данные/настройки и т. п. в xml-документах. Часто при тестировании необходимо проверить что программа корректно ведет себя на довольно большом объеме этих саммых данных. Для этого бывает достаточно просто сгенерировать «большой» xml-документ. В принципе, для этого существуют специальные утилиты, но мне это проще сделать с помощью VBScript :) Собственно, о том как это сделать, я и собираюсь рассказать. Прочтите эту запись до конца »

Как в Excel вернуть комментарии на место

У меня довольно часто «съезжают» комментарии к ячейкам в Excel, что очень неприятно, когда их много. Оказывается, есть простой способ вернуть их на место. Для этого добавляем в книгу такой макрос:

Sub ResetComments()
    Dim cmt As Comment
    For Each cmt In ActiveSheet.Comments
        cmt.Shape.Top = cmt.Parent.Top + 5
        cmt.Shape.Left = cmt.Parent.Offset(0,1).Left + 5
    Next
End Sub

Запускаем и вуаля – все комментарии около своих ячеек ;)

Кучу подобных полезностей можно найти тут.

Как организовать скрытый ввод пароля в vbscript

Следующий код запрашивает у пользователя ввод пароля. Вводимые символы при этом не отображаются. После ввода пароля скрипт выводить его на экран.

Set objPwd = WScript.CreateObject(«ScriptPW.Password»)
strUserPassword = objPwd.GetPassword()
WScript.Echo strUserPassword

Примечание: Данный код работает только при запуске через cscript.exe.

Как сгенерировать GUID в vbscript

Следущий код генерирует и выводит GUID:

Set TypeLib = CreateObject(«Scriptlet.TypeLib»)
Wscript.Echo TypeLib.Guid

Быстрая сортировка на vbscript

Option Explicit
Dim
i, arrSample (9)

arrSample (0) = 9.9
arrSample (1) = 8.7
arrSample (2) = 7
arrSample (3) = 6
arrSample (4) = 5.8946456
arrSample (5) = 4
arrSample (6) = 3
arrSample (7) = 2.4
arrSample (8) = 1

qsort arrSample, 0, 8

For i = 0 To 8
WScript.Echo arrSample(i)
Next

Sub qsort (arr, l, r)
Dim i, j, x, y
    i = l
    j = r
    x = arr((l + r) \ 2)
Do
        While arr(i) < x
            i = i + 1
Wend
        While x < arr(j)
            j = j - 1
Wend
        If i <= j Then
            If arr(i) <> arr(j) Then
                y = arr(i)
                arr(i) = arr(j)
                arr(j) = y
End If
            i = i + 1
            j = j - 1
End If
    Loop Until i > j
If l < j Then qsort arr, l, j
If i < r Then qsort arr, i, r
End Sub

Опубликовано в vbscript. Комментарии (2) »