Хороший хелп по теме есть в справке 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 |