Администрирование Windows Windows Script Host на базе VBScript (*.vbs) Fri, July 21 2017  

Поделиться

нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


Windows Script Host на базе VBScript (*.vbs) Печать
Добавил(а) microsin   

Хороший хелп по теме есть в справке Visual Studio.

1. Вывод простого сообщения (появляется маленькое серое окошко с "Hello World!") и кнопкой "ОК":

Wscript.Echo "Hello World!"

То же самое на JScript (*.js):

WScript.Echo("Hello World!");

2. Запуск программы (на примере запуска калькулятора. Можно вместо calc указать имя bat-файла):

Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("calc")
Do While oExec.Status = 0
     WScript.Sleep 100
Loop
WScript.Echo oExec.Status

Вывод статуса (1) произойдёт после закрытия калькулятора. Можно также применить метод Run. Работа скрипта прерывается, пока не завершится вызванный процесс:

Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("notepad", 1, True)
MsgBox "Обработка завершена! Код возврата - " & RetCode

3. Завершение работы скрипта (JScript), код возврата 1:

WScript.Quit (1);
// Эта строка кода никогда не будет выполнена.
var i = 0;

4. Задержка в 100 миллисекунд (VBScript):

WScript.Sleep 100

5. Работа с реестром (VBScript):

Set WshShell = CreateObject("WScript.Shell")
WshShell.RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride","cw; aaa.bbb.100.77; corp.domainnamehere.com; corp; web01; training; aaa.bbb.0.170; aaa.bb1.0.52; aaa.bb1.0.12; aaa.bb1.0.15; ; aaa.bb1.0.164; aaa.bb2.10.70; aaa.bb1.0.163; aaa.bb1.0.138; aaa.bb3.50.10; aaa.bb4.0.21; aaa.bb5.81.11; aaa.bb5.34.10; aaa.bb1.0.131; aaa.bb1.0.203","REG_SZ"

В этом примере меняется настройка браузера Internet Explorer на обход обращения к прокси для нужного списка IP-адресов и доменных имён.

6. Цикл по всем файлам каталога (в данном примере корневой каталог C:\):

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
For Each File In Folder.Files
   WScript.Echo File.Name
Next

7. Выход из цикла (выполнится WScript.Echo File.Name только для первого имени):

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:\")
For Each File In Folder.Files
   WScript.Echo File.Name
   Exit For
Next

8. Чтобы принудительно прервать работу скрипта (например, из предыдущего совета 5) запускаем taskmgr.exe, ищем процесс wscript.exe (CUI-версия скриптового интерпретатора) или сscript.exe (консольная версия скриптового интерпретатора) прибиваем.

9. Как получить параметры командной строки vbs-скрипта (как передавать параметры из командной строки скрипту):

Dim argFirst, argSecond
Set objArgs = WScript.Arguments
argFirst = objArgs(0)
argSecond= objArgs(1)

10. Работа с датой и временем.

'запись в переменную date_now текущей даты
date_now = Date
'запись в переменную date_min даты, которая на месяц до сегодняшней даты
date_min = DateAdd("m", -1, date_now)

Скрипт, который удаляет все файлы в каталоге, которые старше 1 месяца. Дата содержится в имени файла, например 070412-135124-servA-notconnect.txt, где первые 6 цифр кодируют 2007 год, 4 месяц, 12 день. Скрипт записан в файл remove_old.vbs, вызывать его можно так:

CScript remove_old.vbs //Nologo >>logfile.txt

Текст скрипта remove_old.vbs:

Dim catalog
Dim date_prew, date_now, date_name

catalog = "revision\"

Function DD ()
'return date delimiter symbol
   curr = Date
   for i=1 to Len(curr)
     sym = Mid (curr, i, 1)
     if not IsNumeric(sym) then
         DD = sym
         exit for
     end if
   next
end Function

date_now = Date
date_min = DateAdd("m", -1, date_now)

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder(catalog)
For Each File In Folder.Files
   date_name = DateValue (Mid(File.Name,5,2)+DD+Mid(File.Name,3,2)+DD+Mid(File.Name,1,2))
   if date_name < date_min then
     WScript.Echo (CStr(Now) + ": delete " + File.Name)
     File.Delete
   end if
   Exit For
Next

11. Составление длинных путей с пробелами, используя chr(34).

Dim archivator
Dim archive
Dim destination
archivator = chr(34) + "C:\Program Files\WinRAR\WinRAR.exe" + chr(34)
archive = chr(34) + "U:\Favorites\All Users Start Menu.rar" + chr(34)
destination = chr(34) + "C:\Documents and Settings\All Users\Start Menu\" + chr(34)
cmdline = archivator + " x " + archive + " " + destination
WshShell.Run cmdline

 

Добавить комментарий


Защитный код
Обновить

Top of Page