Войти

Показать полную графическую версию : Скрипт для последовательного запуска нескольких программ


skatet
16-11-2007, 08:27
Всем привет. У вас впервые. Появилась задача - переписать в се написанное на батниках на возможностях WSH.
Кто может подсказать - необходимо в VBS написать скрипт который бы запускал поочередно одну за другой запуск программ. Перед каждым запуском необходимо спросить - запустить программу, если да то запускает, после ее выключения запускает следующую, если ответ был нет, то сразу запускает 2ю и т.д. по той же схеме.
Вот начало как вариант:
Option Explicit

' Объявляем переменные
Dim WshShell,theNotepad,Res,Text,Title
' Создаем объект WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")

Text="Запуск установки программного обеспечения" & vbCrLf & "Установка Хранителя Паролей "
Title="Установка"
' Выводим диалоговое окно на экран
Res=WshShell.Popup(Text,0,Title,vbOkCancel)
' Определяем, какая из кнопок была нажата в диалоговом окне
If (Res=vbOk) Then
Set theNotepad = WshShell.Exec("C:\Program Files\KeePass-1.08\KeePass.exe")
Else
WScript.Sleep 100




End If

или вот еще скрипт. Как я понял WshShell.Run в отличие от WshShell.Exec позволяет дождаться завершения пред программы.

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

Проблема возникла при запуске программ содерж. пробелы в назв. пути, ее попытался решить """путь длинный\программа""" но в этом случае очередность не соблюдается и все программы запускаются одновременно.

amel27
17-11-2007, 07:02
skatet
У вас впервые »
- имхо для этой темы оффтоп;
- код скрипта нужно брать в теги "CODE";
- почему количество кавычек в примере и в пояснении разное?.. так работает:Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("notepad", 1, vbTrue)
RetCode = WshShell.Run("""C:\Program Files\WinRAR\WinRAR.exe""", 1, vbTrue)
RetCode = WshShell.Run("notepad", 1, vbTrue)

skatet
17-11-2007, 09:08
1 - почему для этой темы оффтоп?
2 - код скрипта нужно брать в теги "CODE - для чего?, что они позволяют?
3 - количество кавычек в примере и в пояснении разное - сорри, не заметил - работает только при 3х кавычках
4 - отлично Скрипт заработал как надо!
5 - чем отличается параметр vbTrue от True? (сам тоже поищу ответ) - дело было только в этом?
Огромной Респект! :)

Еще вопрос возник теперь, если с запуском программ более проблем не будет, то как теперь сделать чтоб в зависимости от необходимости установки программ, скрипт перенаправлял на установку текущей программы или на запрос установки следующей программы?

ShaddyR
17-11-2007, 12:05
почему для этой темы оффтоп? »
вероятно, это потому, что тема называется CMD/BAT - нужна помощь в написании *.bat файлов »
и в названии темы ничего не сказано про VB-скрипты? ;)

skatet
17-11-2007, 12:40
:) тем неменее на этом форуме много обсуждений скриптов.
Ну ладно, пойду туда..

amel27
19-11-2007, 11:49
skatet
Ну ладно, пойду туда »
хм... если перечисленных ниже тем мало создай свою, но тут все-таки про батники:

Хелп! Нужен скрипт на на WSH или VBS (http://forum.oszone.net/showthread.php?t=29658)
Скрипт на VBS (http://forum.oszone.net/showthread.php?t=29657)
VBS/WHS/JS - скрипты VBS (http://forum.oszone.net/showthread.php?t=88539)

как теперь сделать чтоб в зависимости от необходимости установки программ, скрипт перенаправлял на установку текущей программы или на запрос установки следующей программы?ты же вроде сам привел пример через WshShell.Popup :dont-know

skatet
19-11-2007, 14:42
все правильно, но:
|
| установить программу№1? |

Да нет
|
установка программы |
| |
| завершение установки | |
| |
| установить программу№2? |
и тд...

вот как надо

ммм пробелы оказ не учитываются

:) подстава

amel27
20-11-2007, 06:41
skatet
не понял - выход при согласии или при отказе... если второе то можно так:Set WshShell = WScript.CreateObject("WScript.Shell")

Text="Запуск установки программного обеспечения" & vbCrLf & """Установка Хранителя Паролей"""
Title="Установка"

Res=WshShell.Popup(Text,0,Title,vbOkCancel)
If Res=vbOk Then
Set theNotepad = WshShell.Exec("C:\Program Files\KeePass-1.08\KeePass.exe")
Else
WScript.Quit
End If
пробелы оказ не учитываются »
в теге CODE учитываются ;)

skatet
20-11-2007, 07:59
:) - "установить программу №1?":
- если да, то установка программы - ожидание окончания - "установить программу №2 ?" .
если да то тоже самое для Пр№3, 4 и т.д.
- если нет - то "установить программу №2 ?"
если нет то тоже самое для Пр№3, 4 и т.д.

"установить программу №1?":
1) - если да, то установка программы - ожидание окончания - "установить программу №2 ?" .
если да то тоже самое для Пр№3, 4 и т.д.
2) - если нет - то "установить программу №2 ?"
если нет то тоже самое для Пр№3, 4 и т.д.

amel27
21-11-2007, 10:06
skatet
ну и в чем проблема?Set WshShell = WScript.CreateObject("WScript.Shell")

If WshShell.Popup("Text1",0,"Title1",vbOkCancel)=vbOk Then WshShell.Run "notepad.exe",1,vbTrue
If WshShell.Popup("Text2",0,"Title2",vbOkCancel)=vbOk Then WshShell.Run """c:\Program Files\WinRAR\WinRAR.exe""",1,vbTrue

skatet
21-11-2007, 17:02
пойду повешусь .. нет лучше поучу азы
Спасибо большое, час соиентируюсь, откомментирую

:) Спасибо.




© OSzone.net 2001-2012