Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Помогите написать скрипт на последовательеый запуск команд (http://forum.oszone.net/showthread.php?t=246542)

peterm 09-11-2012 01:37 2021977

Помогите написать скрипт на последовательеый запуск команд
 
Здравствуйте !

Я хочу написать скрипт на последовательный запуск программ и открытие папок, но чтобы каждое следующее действие
выполнялось лишь после того как нормально выполниться предыдущее. Т.е. будет открыто окно для папки или
соответствующего приложения. Кроме того как вставлять паузы между командами я ничего не смог придумать.

Помогите пожалуйста.

Iska 09-11-2012 01:57 2021984

peterm, приведите пример или Ваш код.

peterm 09-11-2012 02:16 2021987

Option explicit

Dim WshShell, RetCode, objShellApp

Set WshShell = CreateObject("WScript.Shell")
Set objShellApp = CreateObject("Shell.Application")


objShellApp.Open("D:\Internet")
objShellApp.Open("D:\Internet\Doc Soft JavaScript vbScript WSH etc")


WshShell.Run "iexplore",1


WshShell.Run """C:\Program Files\Opera\opera.exe""",2


WshShell.Run "AcroRd32 " & _
"D:\__Temp Doc Soft\__Doc_0005\WSH\VBScript.pdf",2

WshShell.Run "AcroRd32 " & _
"D:\__Temp Doc Soft\WSH\Windows Scripting Host Programmer's Reference.pdf",2



WshShell.Run "hh D:\__Temp Doc Soft\WHS_Automation.chm",2
WshShell.Run "hh D:\__Temp Doc Soft\WSH\vbscrip5.chm",2
WshShell.Run "hh D:\__Temp Doc Soft\WSH\JScript5rus.chm",2

WshShell.Run """D:\__Temp Doc Soft\WSH\Scripts_for_Win_admins_Torres.djvu""",2

objShellApp.Open("D:\Projects\Scripts WSH Jscript Vbscript")

WshShell.Run "wordpad ""D:\__Temp Doc Soft\WSH\Kurs VBScript.rtf""",2

Iska 09-11-2012 04:34 2022013

По поводу объекта «Shell.Application»: как правило, его методы асинхронны — он не ждёт завершения исполнения метода. Под старые ОС были обходные пути, позволяющие скрипту «сидеть и ждать», например, открытия окна Проводника, под нонешними вроде как сие больше не работает.

По поводу метода «.Run()» объекта «WScript.Shell»: метод синхронен, т.е. исполнение скрипта не продолжится, пока метод не будет исполнен. Однако, то, что метод исполнен, отнюдь не означает, что, например, здесь:
Код:

With WScript.CreateObject("WScript.Shell")
        .Run "Photoshop.exe"
        .Run "notepad.exe"
End With

окно Photoshop'а появится на экране раньше, нежели окно Блокнота, скорее наоборот. Ибо Photoshop, по сравнению с Блокнотом весьма и весьма «тяжеловесное» приложение.

Я понимаю, Вас как раз интересует определённый порядок расположения (наложения, «z-order») окон Проводника и запускаемых приложений, так?

peterm 09-11-2012 15:35 2022339

Да именно так. И вообще как получить подтверждение ( код возврата ), что программв уже загрузилась. Это важно не
только для расположения окон.

Iska 09-11-2012 15:51 2022357

Цитата:

Цитата peterm
И вообще как получить подтверждение ( код возврата ), что программв уже загрузилась. »

Здесь у Вас ошибка в терминах: получить код возврата, он же errorlevel, можно только по завершении приложения.

Самый простой путь — использовать библиотеку AutoItX и следить за окнами, ожидая потребного.

peterm 09-11-2012 20:12 2022533

Спасибо я понял. Буду искать, что читать и думать, а если Вы приведете какой-нибудь пример исходного кода то
я буду Вам очень благодарен.

Iska 10-11-2012 03:20 2022721

Смотрите обзор: Обзор библиотеки AutoItX3.dll.

peterm 10-11-2012 23:31 2023216

Спасибо !


Время: 01:18.

Время: 01:18.
© OSzone.net 2001-