Plik wsadowy .bat - uruchamanie programów

Witam serdecznie.

Mam następujący problem. Chcę stworzyć plik wykonywalny .bat z następującymi po sobie poleceniami:

"C:\Program Files\TightVNC\tvnserver.exe" 

 "C:\Program Files\TightVNC\tvnserver.exe" -controlapp -connect XXXXXX

Problem polega na tym, że druga linijka nie odpala się po zamknięciu pierwszej, czyli programu… Chciałbym, aby to automatycznie po sobie postępowało.Może być tam 5 sek późnienie.Szukałem w internecie i jedyne co znalazłem to komendy CALL i start ale one nie działają w moim przypadku, gdyż do aplikacji mam jeszcze zew polecania jak widać w przykładzie… Osobno komendy działają bez zarzutu

Proszę o pomoc.

A czy to drugie polecenie ma być odpalone zawsze po upływie określonego czasu, czy też może nie wiesz kiedy dokładnie ma być odpalone, bo zamknięcie procesu tvnserver.exe może nastąpić w dowolnym momencie?

W tym pierwszym przypadku możesz te polecenia oddzielić instrukcją Timeout. W tym drugim przypadku będziesz miał trochę więcej roboty. Możesz zerknąć na ten topic, bo robiłem tutaj coś podobnego http://forum.dobreprogramy.pl/viewtopic.php?f=23&t=452389. Będziesz musiał odczytać PID procesu przy jego uruchomieniu, a następnie w nieskończonej pętli odpalanej co jakiś czas sprawdzać używając tego PID-a, czy proces został już zamknięty. Jeśli został zamknięty to wtedy odpalisz to drugie polecenie z argumentami.

Chodzi raczej o pierwszy przypadek…

Czyli co mam dokładnie dopisać do pliku .bat?

Wspomnę również, że podczas odpalania 2 “pliku” pierwszy ma działać… W sumie to ta sama aplikacja ale ma działać w ten sposób, że najpierw się odpali a potem połączy z adresem… jeżeli mam juz odpaloną aplikację i użyję

"C:\Program Files\TightVNC\tvnserver.exe" -controlapp -connect XXXXXX

to wszystkie działa.

Dziwne, że to Ci działa jeśli proces tej aplikacji jest już uruchomiony. Wydawać by się mogło, że to polecenie z argumentami wiersza poleceń utworzy nowy proces (niejako nową instancję aplikacji). No ale cóż …

"C:\Program Files\TightVNC\tvnserver.exe"

TIMEOUT /T 2 /NOBREAK

"C:\Program Files\TightVNC\tvnserver.exe" -controlapp -connect XXXXXX

Na wszelki wypadek sprawdź, czy nie masz czasem uruchomionych dwóch procesów tej samej aplikacji po wykonaniu tego batcha.

Nie działa… również czeka na zamkniecie aplikacji… gdy zamknę program ręcznie to dopiero odpala drugą linijkę…

A spróbuj to pierwsze polecenie odpalić z tym przełącznikiem -controlapp (ewentualnie zmień w tym drugim poleceniu na -controlservice) i zwiększ czas timeout-a z 2 do 5 sekund. Jak możesz to podrzuć mi też jakie argumenty wiersza poleceń obsługuje ten cały tvnserver.exe, bo nie mogę nigdzie tego znaleźć.

Komendy: http://i56.tinypic.com/xlxunb.jpg

Nie mogę uruchomić najpierw polecenia z argumentami, ponieważ wyskakuje komunikat, że nie jest uruchomiony program. Musi być tak: Odpala program, odpala 2 linijkę.

Czy próbowałeś zwiększyć ten timeout? I czy próbowałeś zmienić w tym drugim poleceniu controlapp na controlservice?

I jeszcze jedno … w jaki sposób normalnie uruchamiasz tą aplikację? Poprzez jakiś skrót? Jeśli tak to przejdź do właściwości tego skrótu (ppm -> Właściwości) i zobacz co tam jest wpisane w Element docelowy.

start "C:\Program Files\TightVNC\tvnserver.exe"

TIMEOUT /T 2 /NOBREAK

start "C:\Program Files\TightVNC\tvnserver.exe" -controlapp -connect XXXXXX

To powinno działać. Trzeba zforkować program (nie wiem jak się to nazywa po windowsowemu), bo inaczej skrypt czekał na zakończenie każdego z poleceń. Mogłem coś pomieszać z cudzysłowami, ale to raczej sam naprawisz.

Dzięki, sprawdzę jutro w pracy i się przekonamy ;]

Dziękuję za szybkie odpowiedzi i chęć pomocy :slight_smile:

Udało Ci się to ostatecznie uruchomić? Jeśli tak, to co było źle, a jeśli nie to czy mógłbyś odpowiedzieć mi na moje ostatnie pytania?