|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - проблема с WScript.Shell.Exec |
|
|
VBS/WSH/JS - проблема с WScript.Shell.Exec
|
![]() Старожил Сообщения: 210 |
Доброго дня.
Есть скрипт: set WshShell = WScript.CreateObject("WScript.Shell") Set cmdl = WshShell.Exec("cmd") do 'Цикл для того, чтобы cmd не завершалось после окончания скрипта, а иначе гаснет сразу как запускается loop while cmdl.Status=0 Пробовал вместо cmd запускать ping "ipaddress" так же вижу черный экран, но по завершению отправки стандартных четырех пакетов окно закрывается (то есть обработка команд таки идет, только ничего не отображается) Оконные приложения типа calc открываются и работают нормально, причем для них даже не нужна конструкция do...loop С Run все отрабатывает нормально, но при таком способе я не имею в наличии объект запускаемого приложения (то есть не могу никак им управлять), поэтому нужен именно Exec. Помогите разобраться. Заранее спасибо! |
|
Отправлено: 08:01, 12-11-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата morebeauty:
|
|
Отправлено: 08:54, 12-11-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Этого достаточно? |
|
Отправлено: 10:24, 12-11-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Первое можно выполнить и после «.Run()». А второе и третье — да, только «.Exec()». Но Вы не ответили на:
Цитата Iska:
|
|
Отправлено: 10:40, 12-11-2013 | #4 |
![]() Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата morebeauty:
Скажите, а Вы совсем не догадывались что именно я ожидал увидеть? А если у Вас были догадки, скажите, среди них была "открывая командную строку ожидал увидеть немецкое порно"? ![]() |
|||
Последний раз редактировалось morebeauty, 12-11-2013 в 11:10. Отправлено: 11:02, 12-11-2013 | #5 |
![]() Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Ожидал
cmd2.PNG Увидел cmd1.PNG |
Отправлено: 12:39, 12-11-2013 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата morebeauty:
Цитата morebeauty:
Пример программной работы с потоками дочернего консольного приложения: Option Explicit Const WshRunning = 0 Const WshFinished = 1 Const WshFailed = 2 Dim objWshShell Dim objWshExec Dim strStdOut Dim strStdErr Set objWshShell = WScript.CreateObject("WScript.Shell") Set objWshExec = objWshShell.Exec("""%comspec%"" /k") If objWshExec.Status <> WshFailed Then objWshExec.StdIn.WriteLine "cd /d ""%SystemRoot%""" objWshExec.StdIn.WriteLine "dir /b /s ""*.exe""" objWshExec.StdIn.WriteLine "exit" strStdOut = "" strStdErr = "" Do strStdOut = strStdOut & objWshExec.StdOut.ReadAll() strStdErr = strStdErr & objWshExec.StdOut.ReadAll() WScript.Sleep 100 Loop Until objWshExec.Status = WshFinished WScript.Echo "StdOut:" WScript.Echo strStdOut WScript.Echo WScript.Echo "StdErr:" WScript.Echo strStdErr Else WScript.Echo "Can't execute [""%comspec%"" /k]." End If Set objWshExec = Nothing Set objWshShell = Nothing WScript.Quit 0 |
||
Отправлено: 19:53, 12-11-2013 | #7 |
Пользователь Сообщения: 70
|
Профиль | Отправить PM | Цитировать После прочтения вот этого
Цитата:
|
|
------- Отправлено: 20:00, 12-11-2013 | #8 |
![]() Старожил Сообщения: 210
|
Профиль | Отправить PM | Цитировать Ну тогда вопрос такой.
Как мне открыть командную строку с возможностью ей управлять и иметь информацию о выводе в скрипте. Мне это нужно для того, чтобы, например, подключиться по telnet к чему либо и автоматом ввести логин и пароль при приглашении их ввести. Ну и выполнить так же автоматом нужный набор команд. И само собой иметь возможность ввести команды самостоятельно с клавиатуры. Ну и еще с несколькими утилитами требуется работа. SendKeys + Sleep не предлагать. Если это будет собственная консоль для ввода/вывода заместо стандартной, то необходимо еще и как то скрыть это черное окошко (зачем оно будет висеть на экране смущать людей). Ну и наброски на Delphi или на C++, чтобы я хоть имел представление с чего начать. Хотя я все же представляю себе это так. Открывается консольное окошко, скрипт все с него перехватывает, потом каким то образом отключает перехват и отправляет перехваченное снова в окно, чтобы это было видно пользователю. Ну или как то так. |
Отправлено: 05:52, 13-11-2013 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать morebeauty, Вам следует написать свой клиент telnet. Иных вариантов, чтобы удовлетворить все Ваши запросы, нет.
|
Отправлено: 06:56, 13-11-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
exec(), system() | indig_0 | Вебмастеру | 0 | 30-07-2012 23:02 | |
Разное - подскажите что за wscript.exe | mithell | Лечение систем от вредоносных программ | 2 | 26-10-2009 13:56 | |
Службы - При загрузке ОС автоматом запускается wscript.exe | Flynet005 | Microsoft Windows 2000/XP | 14 | 22-09-2008 12:28 | |
проблема с 'find' (скрипт на shell) | romez777 | Программирование в *nix | 1 | 20-02-2007 13:12 | |
Проблема с Х в качестве shell | noemotion | Общий по FreeBSD | 9 | 27-04-2005 13:07 |
|