Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование "удобняшек" на VBScript

Автор: alexejnic
Дата сообщения: 03.08.2008 19:09
Уважаемые. Не пинайте сильно новичка. Как в скрипте прописать по окончании работы запуск следующего скрипта находящегося в этой же папке. Скрипты написаны для архивирования данных.
Автор: alroy
Дата сообщения: 05.08.2008 07:14
Объект WshShell
Методы
Exec
Синтаксис:

Exec(<Command>)

Назначение:

Создаёт новый дочерний процесс (т.е. процесс с теми же переменными среды), который запускает заданное консольное приложение. Возвращается объект "WshScriptExec", который позволяет контролировать ход выполнения запущенного приложения и обеспечивает доступ к потокам StdIn, StdOut и StdErr этого приложения.

Параметры:

<Command> - строка, командная строка запуска приложения.

Описание:

С помощью данного метода можно запускать и графические оконные приложения. В этом случае возвращаемый объект "WshScriptExec" полезен тем, что позволяет получить идентификатор запущенного процесса, который можно использовать, например, для активизации приложения с помощью метода AppActivate.

Пример:

Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("nslookup 127.0.0.1")
WScript.Sleep 7000
Set TextStream = WshExec.StdOut
Str = vbNullString
While Not TextStream.AtEndOfStream
Str = Str & Trim(TextStream.ReadLine()) & vbCrLf
Wend
MsgBox Str


Другой пример:

Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("notepad")
WScript.Sleep 2000
WshShell.AppActivate(WshExec.ProcessID)
WshShell.SendKeys "0123456789"




Добавлено:
Объект WshShell
Методы
Run
Синтаксис:

Run(<Command>,<WindowStyle>,<WaitOnReturn>)

Назначение:

Создаёт новый независимый процесс, который запускает заданное приложение.

Параметры:

<Command> - строка, командная строка запуска приложения.
<WindowStyle> - необязательный, число. Определяет вид окна запускаемого приложения. Некоторые возможные значения:
1 - Активизирует и отображает окно.
2 - Активизирует окно и отображает его в свёрнутом виде.
3 - Активизирует окно и отображает его в максимизированном виде.
<WaitOnReturn> - необязательный, булево (число). True - сценарий возобновит работу только после завершения вызванного процесса. False (по умолчанию) - управление передаётся сразу обратно в сценарий.


Описание:

Если параметр "WaitOnReturn" установлен в True, метод возвращает код выхода вызванного приложения. Иначе метод всегда возвращает ноль.

Пример:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "explorer /e,/root,""C:\Program Files"""


Другой пример:

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


Автор: Victor_Dobrov
Дата сообщения: 06.08.2008 00:41
Кто-нибудь может привести пример нажатия Пробела через SendKeys?
Делал скрипт для Total Commander, другие клавиши нажимаются, а WshShell.SendKeys "{BACKSPACE}" не работает.
Автор: Zloy_duh
Дата сообщения: 06.08.2008 10:15

Цитата:
Кто-нибудь может привести пример нажатия Пробела через SendKeys?
Делал скрипт для Total Commander, другие клавиши нажимаются, а WshShell.SendKeys "{BACKSPACE}" не работает.


А пробел разве не SPACE?
Автор: Nagual
Дата сообщения: 06.08.2008 10:39
Victor_Dobrov
http://www.devguru.com/Technologies/wsh/quickref/wshshell_SendKeys.html
при всем уважении за обложку к InnoSetup побольше внимательности

Добавлено:
точнее http://www.ss64.com/wsh/sendkeys.html
Автор: Victor_Dobrov
Дата сообщения: 06.08.2008 14:38
Nagual - Благодарю, доработаю скрипт к TC и постараюсь быть внимательнее...
P.S. из моих вещей есть еще Total Commander Expert

Добавлено:
Nagual - Ваши советы не помогли, пробел не нажимается...

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "%{F7}^{TAB}{TAB}{UP}"    'открывается окно поиска TC
WshShell.SendKeys "{SPACE}"    'эта строка выдаёт недопустимый вызов или аргумент!
Автор: alroy
Дата сообщения: 12.08.2008 12:59
SendKeys
Синтаксис:

SendKeys(<String>)

Назначение:

Посылает одно или несколько нажатий клавиш в активное окно (имитация набора на клавиатуре).

Параметры:

<String> - строка, перечень клавиш в специальном формате.

Описание:

Каждая клавиша задаётся своим символом. Например, чтобы задать нажатие друг за другом клавиш А, Б и В, нужно указать в качестве параметра строку "АБВ".
Некоторые специальные символы следует всегда задавать заключёнными в фигурные скобки. Перечень таких символов:
{+} {^} {%} {~} {(} {)} {[} {]} {{} {}}
Задание неотображаемых символов и специальных клавиш:
<Backspace> - {BACKSPACE} или {BS} или {BKSP}
<Break> - {BREAK}
<Caps Lock> - {CAPSLOCK}
<Delete> - {DELETE} или {DEL}
<End> - {END}
<Enter> - {ENTER} или ~
<Esc> - {ESC}
<Home> - {HOME}
<Insert> - {INSERT} или {INS}
<Num Lock> - {NUMLOCK}
<Page Down> - {PGDN}
<Page Up> - {PGUP}
<Print Screen> - {PRTSC}
<Scroll Lock> - {SCROLLLOCK}
<Tab> - {TAB}
<Up Arrow> - {UP}
<Left Arrow> - {LEFT}
<Down Arrow> - {DOWN}
<Right Arrow> - {RIGHT}
<F1> - {F1}
<F2> - {F2}
и т.д.
<Shift> - +
<Ctrl> - ^
<Alt> - %
Можно использовать скобки. Например, нажатие клавиш <G> и <S> при нажатом <Shift> следует записывать как "+(GS)". Запись "+GS" приведёт к нажатию клавиши <G> при нажатом <Shift>, а затем клавиши <S> уже без <Shift>.
Задание нескольких нажатий: "{LEFT 42}" приведёт к нажатию клавиши <Left Arrow> 42 раза подряд, "{h 10}" приведёт к нажатию клавиши <h> 10 раз подряд.
Метод не может быть использован для посылки нажатий клавиш в приложения MS-DOS.


Пример:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}"
Автор: snayper7
Дата сообщения: 12.08.2008 14:28
подскажите, можно заблокировать нажатие prt scr на клаве?
Автор: Kukumber2121
Дата сообщения: 13.08.2008 05:52
Здравствуйте. Можно ли написать какой нибудь скрипт, который будет выполнять следующую операцию: в общем в программе появляется модальное окно с ворнингом, нужно чтоб скрипт "нажимал" на ок. Интересует вообще чисто техническая возможность. Стоит ли пробовать что искать или нет? Заранее благодарен.
Автор: Nagual
Дата сообщения: 13.08.2008 13:37
Victor_Dobrov
подозреваю тебе надо что-то вроде этого

Код:
CreateObject("WScript.Shell").SendKeys "%{F7}^{TAB}{TAB}{UP}"
WScript.Sleep 300
CreateObject("WScript.Shell").SendKeys " "

хотя есть ветка на wincmd.ru и пользователи Volniy и Batya
вижу ты уже зареген там, удачи

Добавлено:
Kukumber2121
неплохо бы увидеть скрин
думаю возможно, используя методы AppActivate и SendKeys
в сети полно примеров, стоит только поискать
Автор: Kukumber2121
Дата сообщения: 14.08.2008 01:46
Nagual
Автор: gizzzmo
Дата сообщения: 14.08.2008 10:42

Цитата:
Люди, поможите плиз.
Нужно перенести код батника в VBS
Сам, к сожалению не пишу на VBS
Вот сам код

\\server\everest\everest.exe /R \\server\everest\reports\$hostname_$DATE_$IPADDR /INI /HW /silent /safe


set WSHShell = WScript.CreateObject("WScript.Shell")
WSHShell.Run "\\server\everest\everest.exe /R \\server\everest\reports\$hostname_$DATE_$IPADDR /INI /HW /silent /safe"
Автор: Nagual
Дата сообщения: 14.08.2008 14:39
Kukumber2121
ftp://udav.ostrov.net/Textbooks/NetworkDoc.RU%20-%20%D1%E1%EE%F0%ED%E8%EA%20%E4%EE%EA%F3%EC%E5%ED%F2%EE%E2%20%E8%20%EC%E0%F2%E5%F0%E8%E0%EB%EE%E2%20%E2%20%EF%EE%EC%EE%F9%FC%20%F1%E8%F1%F2%E5%EC%ED%EE%EC%F3%20%E0%E4%EC%E8%ED%E8%F1%F2%F0%E0%F2%EE%F0%F3/www.networkdoc.ru/files/insop/whs/whs-yp.html
думаю сможешь написать по образу и подобию
Автор: w000dman
Дата сообщения: 14.08.2008 22:39
Я тут запостил отдельной темой, хотя стоило, наверное, сюда...
Мне захотелось программу, которая бы сохраняла мои Favorites из IE в виде одного HTML файла (примерно так как в Firefox'е) с древовидной структурой. Причем, чтобы она была без инсталляции, потому как на работе у меня админских прав нету. В результате пришлось написать самому скриптик на VBScript+ActiveX. Если кому надо, то лежит тут:
http://bookmarkgrabber.googlepages.com
Автор: Kukumber2121
Дата сообщения: 15.08.2008 07:45
Nagual
Спасибо за наводку. Буду пробовать!
Автор: RMR
Дата сообщения: 18.08.2008 10:19
Помогите сделать скрипт, помещающий параметры командной строки при запуске скрипта в буфер обмена.
Автор: Nikeanich
Дата сообщения: 19.08.2008 09:50
Привет, подскажите плз. Есть Аутллук 2003, туда приходит почта, она сортируется правилами. Как из определённой папки Аутлука сохранить ВЛОЖЕНИЯ (т.е. файлы прикреплённые к письмам)в папку на диске?
Автор: Skipper
Дата сообщения: 19.08.2008 15:26
[ошибся разделом]
Автор: terence
Дата сообщения: 19.08.2008 17:58
товарищи, подскажте, как заставить Access, при нажатии кнопки(которую разместил на форме) загружал данные из файла xls, и помещал в свою базу определённыю ячеку из экселя в ячейку своей базы.

это нужна для того , что бы кучу таких файликов экселя, которе заполнены по единой форме, забрости в единую БД, что бы потом можно было искать и просматривать эту инфу
Автор: RMR
Дата сообщения: 21.08.2008 11:26
Какой аналог cd %~dp0 в vbscript?
Автор: mozers
Дата сообщения: 21.08.2008 14:24
RMR
Для JS пишу так:
Код: var script_path=WScript.ScriptFullName.replace(/^(.*\\).*?$/gi, '$1');
Автор: RMR
Дата сообщения: 21.08.2008 16:28
mozers
Спасибо. Сделал так:

Код: Set WshShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
WshShell.CurrentDirectory=fso.GetParentFolderName(WScript.ScriptFullName)
Автор: Diadema
Дата сообщения: 21.08.2008 16:59
У кого есть опыт работы с Visual Basic Script и Active Directory (2003) подскажите, пожалуйста.
Задача состоит в следующем.
1. Необходимо вызвать модальное окно "Directory Object Picker".
2. После завершения выбора необходимо вернуть имя вида "Domain\User' полученного объекта в какую-либо переменную.

Работа с Object Picker в C++ хорошо описана здесь: http://msdn.microsoft.com/ru-ru/library/ms675899(en-us,VS.85).aspx

Возможно ли сделать такое на VBS (не на VB!)? Или придется искать другие варианты?

Добавлено:
У кого есть опыт работы с Visual Basic Script и Active Directory (2003) подскажите, пожалуйста.
Задача состоит в следующем.
1. Необходимо вызвать модальное окно "Directory Object Picker".
2. После завершения выбора необходимо вернуть имя вида "Domain\User' полученного объекта в какую-либо переменную.

Работа с Object Picker в C++ хорошо описана здесь: http://msdn.microsoft.com/ru-ru/library/ms675899(en-us,VS.85).aspx

Возможно ли сделать такое на VBS (не на VB!)? Или придется искать другие варианты?

Вызвать функцию http://msdn.microsoft.com/en-us/library/ms675965.aspx так же не получается..
Автор: mozers
Дата сообщения: 21.08.2008 23:21
RMR
Цитата:
fso.GetParentFolderName(WScript.ScriptFullName)
Твое решение - лучше
Автор: RuStn
Дата сообщения: 28.08.2008 09:55
to all
Помогите плиз...
На удалённой машинке создать папку и после дать доступ на неё...
Всё излазил, есть примеры на создание локальных папок

Код: Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.CreateFolder("C:\FSO")
Автор: Eximus
Дата сообщения: 29.08.2008 19:45
Люди добрые подскажите решение.
Есть удаленный комп без ACPI и физического доступа.
Нужно сделать так чтобы он скажем в 03-00 выключался, в 09-00 включался.
Так получается что удобнее всего создать некие 2 скрипта, запихать в nCron и жить спокойно.
Нарыл на одном ресурсе скрипт для Wake On Lan

Цитата:
'on error resume next


complist =".\maclist.txt"

Dim oFSO, objWOL, objTextFile
Const ForReading = 1
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWOL = WScript.CreateObject("UltraWOL.ctlUltraWOL")
Set objTextFile = oFSO.OpenTextFile(complist, ForReading)


Do While objTextFile.AtEndOfStream <> True

comp = objTextFile.Readline

objWOL.MACAddr = comp
objWOL.LocalIP = "172.25.193.47"

for a = 0 to 159
objWOL.BroadcastAddr = "172.25." & a & ".255"
objWOL.WakeUp
next

for b = 210 to 255
objWOL.BroadcastAddr = "172.25." & b & ".255"
objWOL.WakeUp
next

Loop

wscript.echo "WOL Broadcast complete"

только непонятно какие адреса править под мой комп (ай-пи к примеру 192.168.1.2)
====
и нужен похожий скрипт для выключения, желательно тоже на vbs, но можно и батник
Заранее спасибо за консультацию.
Автор: figaro1982
Дата сообщения: 31.08.2008 20:50
Eximus
тут вроде все ясно в скрипте, тем более если почитать ссылку откуда нарыл его.
objWOL.LocalIP = "172.25.193.47" - это айпи твоего компа, точнее компа с которого будет запускаться скрипт
Затем идут 2 цикла для пробуждения компов
Сначала 172.25.a.255, где а от 0 до 159
а потом 172.25.b.255, где b от 210 до 255
для каждого компа чей айпишник входит попадает в цикл выполняется команда WakeUp
Да, также есть файлик maclist.txt в котором записаны mac адреса твоих компов. Из него изначально адреса и читаются.
Также тебе необходимо чтобы в системе был прописан объект WOL!!!!

А чтобы запускать команду просыпания в 9.00 нужно например добавить If... then

If time() = "9:00:00" then
objWOL.WakeUp
End If
Автор: Eximus
Дата сообщения: 01.09.2008 07:59
ок, спасибо огромное
все понятно, кроме:

Цитата:
Также тебе необходимо чтобы в системе был прописан объект WOL!!!!

имеется ввиду включить в биосе wol или нечто другое?
Автор: Forumz
Дата сообщения: 01.09.2008 09:28
Приветствую, прошу вашего участия и помощи

есть текстовой файлик в котором есть такие строки:

0=11
1=134217729
2=it1
3=Basic
4=-1
6=,1,6,12,
9=512753125
10=524288000
13=9
14=3
19=5

Необходим VBS скрипт который по запросу пользователя, в данном случае - it1 (строка 2=it1) выводить строку 9 (9=512753125)


Нашел кое что, можно что-то из этого слепить?

{ Hайти строку }
var t:text; s,s1:string;
count:word;
begin
readln(s); { Вводим строку для поиска }
assign(t,'text.txt');reset(t);
s1:=''; count:=0;
while not eof(t) and (s<>s1) do begin
readln(t,s1); inc(count);
end;
writeln('искомая строка является ',count,' строкой в файле');
close(t);
end.

{ Hайти подстроку (слово) }
var
t:text;
s,s1:string;
count:word;
begin
readln(s); {вводим подстроку}
assign(t,'text.txt'); reset(t);
s1:=''; count:=0;
while not eof(t) and (pos(s,s1)=0) do begin
readln(t,s1);
inc(count);
end;
writeln('буквосочетание "',s,'" найдено в строке N ',count,':');
writeln(s1);
close(t);
end.
Автор: Nagual
Дата сообщения: 01.09.2008 13:00
Forumz
ты немного ошибся темой, здесь обсуждается сервер сценариев wsh, языки js и vbs
а твой "нарытый" код напоминает delphi и выглядит непричесанным и сырым
попробуй более точно сформулировать задачу и запостить ее здесь

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475

Предыдущая тема: Работа в Delphi c CryptoApi


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.