Z uwagi na wadliwość sterownika SetPoint musiałem napisać skrypt do jego
restartowania. Wszystko działa ok lecz ma on jednak jeden feler -
pozostawia otwarte okno po wykonaniu akcji. Czy ktoś wie co należy zmienić
w poniższym kodzie aby okno zamykało się samo?
@echo off
taskkill /f /im setpoint.exe
"C:\Program Files\Logitech\SetPointP\SetPoint.exe" /launchGaming
A exit na końcu?
Spróbuj w ostatnim wierszu uruchamiać EXEca przez start, a
nie tylko podanie nazwy.
--
|""""""""""""""""""""""""""""""""""""""""""""""""""""""""""|
| Radosław Sokół | http://www.grush.one.pl/ |
| | Politechnika Śląska |
\........................................................../
hstart, albo tez je ubij
> A exit na końcu?
To już próbowałem. Niczego nie zmienia. Okno pozostaje otwartym. Co więcej.
Gdy skrypt nie posiada exit i zakomentuję uruchomienie setpoint'a, to okno
zamyka się. Exit nie jest więc potrzebny do niczego.
Dokładnie tak. Skrypt kończy się, gdy zostanie wykonana ostatnia komenda,
tzn. gdy ona zakończy działanie. Ostatnia komenda to uruchomienie programu
więc ona się kończy w momencie jego zamknięcia. Jesli to ma działać
asynchronicznie, to trzeba użyć start, tak jak pisał Radek.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 3 days, 18 hours, 6 minutes and 30 seconds
>
> hstart, albo tez je ubij
Pobrałem ten programik i pewnie załatwi sprawę. Jednakże chciałbym rozważyć
jeszcze wątek ubijania okna. Zmodyfikowałem skrypt:
@echo off
taskkill /f /im setpoint.exe
"C:\Program Files\Logitech\SetPointP\SetPoint.exe" /launchGaming
taskkill /f /im cmd.exe
...i kompletnie nic się nie zmieniło. Okno pozostaje otwarte. Gdy natomiast
otworzę drugie okno a w nim wprowadzę:
taskkill /f /im cmd.exe
...zostaną zamkniete oba. O co może chodzić? Dlaczego to pierwsze samo się
nie zamknęło mimo wyraźnej komendy?
Już bardziej z ciekawości: czy skrypt może uzyskać swój PID w celu
zamknięcia siebie samego a nie wszystkich okien programu cmd?
> W dniu 14.08.2011 18:11, Marek pisze:
>> pozostawia otwarte okno po wykonaniu akcji. Czy ktoś wie co należy zmienić
>> w poniższym kodzie aby okno zamykało się samo?
>>
>> @echo off
>> taskkill /f /im setpoint.exe
>> "C:\Program Files\Logitech\SetPointP\SetPoint.exe" /launchGaming
>
> Spróbuj w ostatnim wierszu uruchamiać EXEca przez start, a
> nie tylko podanie nazwy.
Właśnie eksperymentuję i zatrzymałem się na parametrach:
start /b "C:\Program Files\Logitech\SetPointP\SetPoint.exe" launchGaming
powoduje próbę uruchomienia launchGaming zamiast przekazać to jako parametr
start /b "C:\Program Files\Logitech\SetPointP\SetPoint.exe" /launchGaming
traktuje launchGaming jako błędny parametr polecenia start
start /b "C:\Program Files\Logitech\SetPointP\SetPoint.exe /launchGaming"
nic nie robi
Jak więc przekazać parametr?
> Marek <pr...@spamowi.com> napisał(a):
>> To już próbowałem. Niczego nie zmienia. Okno pozostaje otwartym. Co
>> więcej. Gdy skrypt nie posiada exit i zakomentuję uruchomienie
>> setpoint'a, to okno zamyka się. Exit nie jest więc potrzebny do niczego.
>
> Dokładnie tak. Skrypt kończy się, gdy zostanie wykonana ostatnia komenda,
> tzn. gdy ona zakończy działanie. Ostatnia komenda to uruchomienie programu
> więc ona się kończy w momencie jego zamknięcia. Jesli to ma działać
> asynchronicznie, to trzeba użyć start, tak jak pisał Radek.
Dzięki :)
Tylko mam z tym kłopot - odpisałem Radkowi, ale może szybciej mi pomożesz.
Mianowicie nie potrafię przekazać parametru /launchGaming do aplikacji za
pomocą start.
Może tak:
start /b "tytul" "C:\Program Files\Logitech\SetPointP\SetPoint.exe"
/launchGaming
--
marfi
W nowej linii??? Otrzymuję komunikat, że polecenie /launchGaming nie jest
rozpoznawalne przez system. Jeśli w tej samej linii, to /launchGaming jest
traktowane jako parametr start a nie wywoływanego programu i otrzymuję
komunikat, że start nie ma takiego parametru.
zrób skrypt np c:\setpointp.cmd
w nim wpisz C:\Program Files\Logitech\SetPointP\SetPoint.exe /launchGaming
Kolejny skrypt c:\startspp.cmd i w nim:
start c:\setpointp.cmd
zapomniałem o parametrze /b, ale z nim poeksperymentuj już sam ;-)
Nie, nie w nowej lini - to poczta systemu windows podzieliła
autoamatycznie.
Niekiedy trudno zrozumieć intencje programistów Windows w sytuacji gdy
ścieżka do pliku zawiera spację więc próbowałbym jeszcze (w jedenj linii):
start /b "tytul" "C:\Program Files\Logitech\SetPointP\SetPoint.exe"
"/launchGaming"
lub
start /b "tytul" "C:\Program Files\Logitech\SetPointP\SetPoint.exe
/launchGaming"
--
marfi
> Nie, nie w nowej lini - to poczta systemu windows podzieliła
> autoamatycznie.
Domyśliłem się i sprawdziłem obie wersje.
> start /b "tytul" "C:\Program Files\Logitech\SetPointP\SetPoint.exe"
> "/launchGaming"
A to zadziałało! Co ciekawe gdy używany jest parametr, to tytuł okna nie
może być pominięty bo inaczej błąd wyświetli.
Dzięki! :-)
>
> lub
>
> start /b "tytul" "C:\Program Files\Logitech\SetPointP\SetPoint.exe
> /launchGaming"
To zgodnie z tym co napisałem w odpowiedzi poprzedniej - nie zadziała gdyż
traktowane jest jako nazwa programu
racja w sumie, wisi na SetPoint.exe przeciez
Przekombinowane, nie ma potrzeby robić dwóch skryptów.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 4 days, 10 hours, 54 minutes and 45 seconds
Taka głupia logika Microsoftu, jakieś niezłe dragi musiał brać ten, co
wymyślił motyw z tym tytułem okna....
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 4 days, 10 hours, 55 minutes and 21 seconds