Ostatnio jedna z usług „działających w tle” na moim komputerze zaczęła szwankować, prawdopodobnie ze względu na to, że najczęściej korzystam z hibernacji zamiast zamykać system (wygoda i czas), i podczas wzbudzania coś się dziej z nią niedobrego, i przestaje działać, a przyznam, że nie mam czasu ani ochoty sprawdzać, czy na pewno działa – ma działać automatycznie w tle i tyle…
Dlatego postanowiłem przygotować mały skrypt (zwykły BAT/CMD) uruchamiany „raz na jakiś czas” za pomocą systemowego harmonogramu zadań, który ma m.in. sprawdzić czy usługa działa, w i razie konieczności ją ponownie uruchomić (zrestartować).
Kontrola stanu usługi w systemie Windows
Skrypt zaczyna swoją pracę od wywołania funkcji sprawdzającej za pomocą komendy „sc” status monitorowanej usługi (RUNNING), i jeśli kod błędu będzie równy 1 (usługa prawdopodobnie nie działa), w tym momencie wywoływana jest funkcja odpowiedzialna za ponowne włączenie usługi:
:CzyUslugaOK
sc query JakasUslugaService | Find "RUNNING"
if %errorlevel% == 1 call:StartUslugi
GOTO:EOF
:StartUslugi
net stop JakasUslugaService
net start JakasUslugaService
if %errorlevel% == 2 call:StartUslugi
if %errorlevel% == 0 timeout 5
if %errorlevel% == 0 start "JakasUsluga" "C:\(...)\JakasUslugaTray.exe"
if %errorlevel% == 0 exit
GOTO:EOF
call:CzyUslugaOK
Choć powyżej to wersja przygotowana na potrzeby tego wpisu, bo u mnie działa to w połączeniu z jeszcze jedną funkcją, która sprawdza czy dostępny jest określony zasób dyskowy:
:CzyDyskOK
@IF EXIST "x:\status.txt" (
call:CzyUslugaOK
) ELSE (
timeout 60
call:CzyDyskOK
)
GOTO:EOF
CzyUslugaOK
sc query JakasUslugaService | Find "RUNNING"
if %errorlevel% == 1 call:StartUslugi
GOTO:EOF
StartUslugi
net stop JakasUslugaService
net start JakasUslugaService
if %errorlevel% == 2 call:StartUslugi
if %errorlevel% == 0 timeout 5
if %errorlevel% == 0 start "JakasUsluga" "C:\(...)\JakasUslugaTray.exe"
if %errorlevel% == 0 exit
GOTO:EOF
call:CzyDyskOK
Po prostu usługa obecnie ma wyłączony automatyczne uruchamianie wraz z systemem – i tak zawodziło, a dodatkowo pierwsze uruchomienie powinno mieć miejsce dopiero po podłączeniu i odblokowaniu dodatkowego dysku.
Dlatego najpierw skrypt sprawdza czy na określonym dysku znajduje się kontrolny plik „status.txt” – jeśli go nie ma, daje mi (kolejne) 60 sekund czasu na podłączenie, i dopiero gdy wykryje zdefiniowany plik przystępuje do uruchomiania usługi.
![(!) Zgłoś błąd na stronie](https://webinsider.pl/wp-content/uploads/2019/12/webinsider_zglos-blad-na-stronie_200x29_888888.png)
![Pomogłem? To może postawisz mi wirtualną kawę?](https://webinsider.pl/wp-content/uploads/2025/12/pomogle-postaw-mi-wirtualna-kawe-202308-6f4e37.png)
- Zakupy w sklepie Bambu Lab bez podatku VAT, czyli rejestracja jako B2B oraz specjalny link do specjalnego sklepu - 1970-01-01
- W Home Assistant 2024.7 w końcu można bezpośrednio z właściwości danego elementu zarządzać jego rozmiarem w cały jeszcze czas eksperymentalnym układzie „sekcje” - 1970-01-01
- Sprzedajesz drona DJI? Usuń go ze swojego konta. Kupujesz używanego drona DJI? Zadbaj, by dotychczasowy właściciel usunął go ze swojego konta! - 1970-01-01