Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBScript/JScript/WSH/WMI/HTA

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Longbow
0 / 0 / 0
Регистрация: 08.02.2015
Сообщений: 2
#1

VBS: Вывод данных(потока) в другое приложение и запуск с параметрами - VBScript/JScript

08.02.2015, 14:08. Просмотров 1751. Ответов 5
Метки нет (Все метки)

Люди добрые, просьба помочь, в VBS я к сожалению полный профан..

Есть VBS скрипт, в который нужно добавить строчку запуска приложения с параметрами и передать в приложение некие данные.
В CMD это выглядит так:

Bash
1
echo vmpcrp;IIS-Healthcheck;2;CRITICAL NO Access | C:\UsersWeb\Nagios\send_nsca\send_nsca.exe -H 192.168.181.28 -p 5667 -d ; -c C:\UsersWeb\Nagios\send_nsca\send_nsca.cfg
То есть мы передаем текст 'vmpcrp;IIS-Healthcheck;2;CRITICAL NO Access' в приложение C:\UsersWeb\Nagios\send_nsca\send_nsca.exe и запускаем его с различными параметрами

Мне нужно переделать это под vbs, как - я в упор не понимаю, примеров не нашел. Видимо туплю. Как запустить файл с параметрами из VBS ясно, а вот как туда передать данные - не пойму. Насколько я понимаю таких штук как конвейеры в нем нет.

Запуск с параметрами я вижу примерно так:
WshShell.exec ( "C:\UsersWeb\Nagios\send_nsca\send_nsca.exe -H 192.168.181.28 -p 5667 -d ; -c C:\UsersWeb\Nagios\send_nsca\send_nsca.cfg" )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2015, 14:08
Я подобрал для вас темы с готовыми решениями и ответами на вопрос VBS: Вывод данных(потока) в другое приложение и запуск с параметрами (VBScript/JScript):

Vbs -скрытый запуск программы с параметрами и её отслеживание - VBScript/JScript
Требуется скрыто запускать программу с параметром, если она завершится, скрыто перезапускать её с параметрами, один из форумчан говорит что...

Запуск bat из VBS - VBScript/JScript
Добрый день! Я не програмист, поэтому обращаюсь к Вам с данным вопросом: Есть скрипт для запуска программ из под администратора с известным...

Запуск файла с vbs скрипта - VBScript/JScript
Как запустить какой-либо файл с vbs скрипта? Прописал путь таким образом но не всегда он срабатывает set...

VBS Запуск bat с через VBS с правами администратора - VBScript/JScript
Set WshShell = CreateObject("WScript.Shell") WshShell.Run "service.bat", 1, false Можно ли сделать тоже самое, но с правами...

Создание бинарного файла из vbs / Как создать exe файл из vbs - VBScript/JScript
Имеется файл с расширением exe. Нужно как-нибудь занести массив байт в скрипт, и чтоб потом этот файл создавался при запуске vbs

Вывод сообщений из программы сценария VBScript (.vbs-файл) - VBScript/JScript
Дано: Win2003Srv До переустановки системы сценарий VBScript выводил сообщения (командой WScript.Echo "Сообщение...") одно за другим в...

5
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
08.02.2015, 19:18 #2
Чтобы передать данные в подпроцесс в VBS/JS обычно используют 2 способа:

1. objA.StdIn.Write("string") здесь objA = objWSH.Exec("proga.exe");
примерно как в #4 посте треда Получение внешнего IP-адреса
только там objA.StdOut.Read() соотв. надо переделать

2. функция SendKeys() - шлет клавиатурные события в активное окно примерно
как в этом треде: Перенаправить запрос пароля из консоли на командный файл

Добавлено через 4 часа 26 минут
по первому варианту должно быть что-то вроде такого:
Visual Basic
1
2
3
4
5
6
7
8
set objWSH = CreateObject("WScript.Shell")
set objA = objWSH.Exec("C:\UsersWeb\Nagios\send_nsca\send_nsca.exe -H 192.168.181.28 -p 5667 -d ; -c C:\UsersWeb\Nagios\send_nsca\send_nsca.cfg")
 
WScript.Sleep(1000)
 
objA.StdIn.Write("vmpcrp;IIS-Healthcheck;2;CRITICAL NO Access")
 
'WScript.Echo(objA.StdOut.ReadAll())
3
Longbow
0 / 0 / 0
Регистрация: 08.02.2015
Сообщений: 2
09.02.2015, 11:05  [ТС] #3
buggydancer, спасибо за ответ! Все прояснилось наконец) Попробовал и так, и так - все равно не взлетает. Может быть пути в кавычки все же надо добавить? Вроде поигрался с кавычками - никакого результата((

"C:\UsersWeb\Nagios\send_nsca\send_nsca.exe -H 192.168.181.28 -p 5667 -d ; -c C:\UsersWeb\Nagios\send_nsca\send_nsca.cfg"

Добавлено через 11 часов 33 минуты
В итоге сделал вот так, всем сапсибо, вопрос закрыт))

Visual Basic
1
CreateObject("WScript.Shell").Exec("cmd /c ""echo vmpcrp;IIS-Healthcheck;0;I FEEL GOOD| C:\UsersWeb\Nagios\send_nsca\send_nsca.exe -H 192.168.181.28 -p 5667 -d ; -c C:\UsersWeb\Nagios\send_nsca\send_nsca.cfg""")
0
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
09.02.2015, 13:40 #4
Цитата Сообщение от Longbow Посмотреть сообщение
...Попробовал и так, и так - все равно не взлетает...
может ему Cr/Lf в конце строки нехватало? т.е. 6 строку переписать как нибудь так:
Visual Basic
1
objA.StdIn.Write("vmpcrp;IIS-Healthcheck;2;CRITICAL NO Access" & vbCrLf)
или так:
Visual Basic
1
objA.StdIn.WriteLine("vmpcrp;IIS-Healthcheck;2;CRITICAL NO Access")
3
ComSpec
3397 / 1942 / 627
Регистрация: 26.02.2014
Сообщений: 1,457
09.02.2015, 20:25 #5
Может быть программу нужно запускать с помощью "cmd.exe":
Visual Basic
1
CreateObject("WScript.Shell").Exec("cmd /c C:\UsersWeb\Nagios\send_nsca\send_nsca.exe -H 192.168.181.28 -p 5667 -d ; -c C:\UsersWeb\Nagios\send_nsca\send_nsca.cfg").StdIn.Write("vmpcrp;IIS-Healthcheck;2;CRITICAL NO Access")
?

Или выполнить всю командную строку:
Visual Basic
1
CreateObject("WScript.Shell").Exec("cmd /c ""echo vmpcrp;IIS-Healthcheck;2;CRITICAL NO Access| C:\UsersWeb\Nagios\send_nsca\send_nsca.exe -H 192.168.181.28 -p 5667 -d ; -c C:\UsersWeb\Nagios\send_nsca\send_nsca.cfg""")
?
1
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
10.02.2015, 13:05 #6
Цитата Сообщение от ComSpec Посмотреть сообщение
...Может быть программу нужно запускать с помощью "cmd.exe":
Да, ТС в итоге так и сделал, я, вот тоже сделал вариант с xcopy:
Visual Basic
1
2
3
4
5
6
7
8
9
'cscript.exe //nologo exec2.vbs
set objWSH = CreateObject("WScript.Shell")
set objA = objWSH.Exec("xcopy c:\-\tel93.zip c:\-\pub")
 
'WScript.Sleep(1000)
 
objA.StdIn.Write("y")
 
WScript.Echo(objA.StdOut.ReadAll())
Поскольку проверить вариант ТС с нагиосом \Nagios\ немогу
1
10.02.2015, 13:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2015, 13:05
Привет! Вот еще темы с ответами:

Отложеный запуск потока с параметрами - C#
Есть несколько устройств, для работы с которыми создается соответствующее число потоков. Потоки складирую в Dictionary, после этого в...

Запуск потока для функции с параметрами - C++
Доброго дня! Что хочется: распараллелить выполнение процедуры func. Давая новым потокам соответствующие параметры. На c# я...

Запуск из диалога - другое приложение - C++ Builder
Из диалога запускается другое приложение. void __fastcall TfmMain::Button5_2Click(TObject *Sender) { OpenGame->Execute(); ...

Как отследить запуск приложения через другое приложение - Программирование Android
Всем привет!!! Кто сталкивался с такой задачей,подскажите пожалуйста,не могу разобраться совсем. Или хоть в каком направлении копать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru