Plik wsadowy .bat - uruchamanie programów


(Kuchar254) #1

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.


(Tomek Matz) #2

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.


(Kuchar254) #3

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.


(Tomek Matz) #4

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.


(Kuchar254) #5

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


(Tomek Matz) #6

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źć.


(Kuchar254) #7

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ę.


(Tomek Matz) #8

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.


(Darkvifon) #9
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.


(Kuchar254) #10

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

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


(Tomek Matz) #11

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?