Masz na dysku skrypt, który co rano musisz odpalić ręcznie? Backup, który robisz „jak pamiętasz”? Kopiowanie plików, czyszczenie folderu Temp, restart usługi raz w tygodniu? Harmonogram zadań (ang. Task Scheduler) to wbudowane w Windows narzędzie, które zrobi to za Ciebie — o konkretnej godzinie, przy starcie systemu, po zalogowaniu albo gdy w dzienniku zdarzeń pojawi się określony błąd. Żadnego dodatkowego oprogramowania nie instalujesz. W tym poradniku pokażę Ci, jak go uruchomić, jak działa pod spodem, jak utworzyć zadanie klikając i z linii poleceń (schtasks oraz PowerShell), a na końcu jak ogarnąć najczęstszy problem: dlaczego zadanie „się nie odpaliło”.
Czym jest Harmonogram zadań i kiedy go użyć
Task Scheduler to systemowa usługa Windows (Schedule), która uruchamia programy, skrypty i polecenia według zdefiniowanych reguł. Jeśli znasz Linuksa, to najbliższy odpowiednik crona — z tą różnicą, że Task Scheduler reaguje nie tylko na czas, ale też na zdarzenia systemowe: logowanie użytkownika, podłączenie do sieci, bezczynność komputera czy pojawienie się konkretnego wpisu w Podglądzie zdarzeń.
To nie jest to samo co autostart. Folder Autostart (albo zakładka Uruchamianie w Menedżerze zadań) potrafi tylko jedno: odpalić program przy starcie. Harmonogram daje Ci pełną kontrolę nad tym kiedy, na jakim koncie i pod jakimi warunkami coś ma się wykonać.
Typowe zastosowania, które realnie oszczędzają czas:
- Backup — uruchomienie
robocopyalbo skryptu kopiującego pliki na dysk sieciowy co noc - Sprzątanie dysku — czyszczenie folderów tymczasowych albo logów starszych niż X dni
- Raporty — odpalenie skryptu w Pythonie czy PowerShellu, który generuje dane i wysyła mailem
- Utrzymanie — restart usługi lub aplikacji o stałej porze
- Reakcja na zdarzenie — wykonanie akcji, gdy system zaloguje błąd o danym ID
Jak otworzyć Harmonogram zadań
Masz kilka dróg — wybierz tę, którą zapamiętasz:
- Wpisz
harmonogramw wyszukiwarce na pasku zadań i kliknij Harmonogram zadań. - Naciśnij
Win + R, wpisztaskschd.msci zatwierdź Enterem — to najszybszy sposób. - Przez Panel sterowania → Narzędzia administracyjne → Harmonogram zadań.
Okno dzieli się na trzy kolumny. Po lewej masz drzewo bibliotek (Biblioteka harmonogramu zadań) z folderami — Twoje własne zadania najlepiej trzymać w osobnym folderze, żeby nie ginęły w setkach zadań systemowych Microsoftu. Środek to lista zadań i ich szczegóły. Po prawej panel Akcje z najważniejszymi przyciskami: Utwórz zadanie podstawowe, Utwórz zadanie i Importuj zadanie.
Anatomia zadania: wyzwalacze, akcje, warunki, ustawienia
Zanim zaczniesz klikać, warto rozumieć, z czego składa się każde zadanie. To cztery zakładki, które zobaczysz przy tworzeniu i edycji:
- Wyzwalacze (triggery) — kiedy zadanie ma startować. Może być ich kilka: codziennie o 3:00, plus dodatkowo przy każdym zalogowaniu. Dostępne typy to m.in. według harmonogramu (czas), przy logowaniu, przy uruchomieniu systemu, w stanie bezczynności, przy zdarzeniu z dziennika.
- Akcje — co ma się wykonać. Najczęściej Uruchom program (podajesz ścieżkę do
.exe,.bat,.ps1lub.pywraz z argumentami). Historycznie były też akcje wysłania maila i wyświetlenia komunikatu, ale Microsoft je wycofał — dziś realizujesz je przez skrypt. - Warunki — dodatkowe filtry: „tylko gdy komputer jest na zasilaniu sieciowym”, „obudź komputer, by wykonać zadanie”, „uruchom tylko gdy dostępne jest połączenie sieciowe”. Tu wpada najczęstsza pułapka laptopów — domyślnie zadanie nie odpali się na baterii.
- Ustawienia — zachowanie: czy ponawiać po niepowodzeniu, ile razy, czy zatrzymać zadanie po określonym czasie, co zrobić jeśli poprzednia instancja jeszcze działa.
W zakładce Ogólne ustawiasz jeszcze dwie kluczowe rzeczy: konto, na którym zadanie się wykona, oraz przełącznik „Uruchom niezależnie od tego, czy użytkownik jest zalogowany” i „Uruchom z najwyższymi uprawnieniami”. Tych dwóch nie przeocz — odpowiadają za większość problemów z zadaniami, które „nic nie robią”.
Tworzenie zadania przez kreator (Utwórz zadanie podstawowe)
Najprostsza droga dla początkującego. Po prawej kliknij Utwórz zadanie podstawowe. Kreator przeprowadzi Cię krok po kroku:
- Nazwa i opis — np. „Backup dokumentów” i krótki opis, żebyś za pół roku wiedział, co to robi.
- Wyzwalacz — wybierz częstotliwość: codziennie, co tydzień, co miesiąc, jednorazowo, przy uruchomieniu komputera albo przy logowaniu. Dla „codziennie” podajesz godzinę startu i co ile dni powtarzać.
- Akcja — zostaw Uruchom program. W polu Program/skrypt podaj pełną ścieżkę, np.
C:\Windows\System32\robocopy.exe, a w Dodaj argumenty resztę:C:\Dane D:\Backup\Dane /MIR. - Podsumowanie — sprawdź i zatwierdź. Zaznacz Otwórz okno Właściwości po zakończeniu, jeśli chcesz od razu dostroić warunki.
Ważny szczegół przy skryptach. Jeśli odpalasz plik .ps1, nie wskazuj go bezpośrednio jako programu. W polu programu wpisz powershell.exe, a w argumentach: -ExecutionPolicy Bypass -File "C:\Skrypty\raport.ps1". Analogicznie dla Pythona: program to python.exe, argument to ścieżka skryptu. Dodatkowo ustaw Rozpocznij w (opcjonalnie) na folder skryptu — inaczej ścieżki względne w kodzie nie zadziałają.
Pełna kontrola: Utwórz zadanie (tryb zaawansowany)
Kreator nie pokazuje wszystkiego. Opcja Utwórz zadanie (bez słowa „podstawowe”) otwiera od razu wszystkie zakładki i daje to, czego kreator nie potrafi:
- Wiele wyzwalaczy i akcji w jednym zadaniu — np. najpierw zatrzymaj usługę, potem skopiuj pliki, potem ją uruchom.
- Uruchamianie bez zalogowanego użytkownika — niezbędne na serwerach i komputerach, które robią coś w tle, gdy nikt na nich nie pracuje. Po zaznaczeniu tej opcji system poprosi o hasło konta.
- Najwyższe uprawnienia — jeśli skrypt wymaga praw administratora (np. restart usługi), zaznacz Uruchom z najwyższymi uprawnieniami. Bez tego zadanie wystartuje z ograniczonym tokenem i akcja cicho zawiedzie.
- Powtarzanie wewnątrz dnia — w ustawieniach wyzwalacza możesz włączyć „Powtarzaj zadanie co: 15 minut przez okres: 8 godzin”. To pozwala robić rzeczy częściej niż raz dziennie, czego kreator nie oferuje.
Z linii poleceń: schtasks
Klikanie jest fajne, ale gdy chcesz to samo zadanie wdrożyć na dziesięciu komputerach albo zapisać w skrypcie instalacyjnym, używasz schtasks — narzędzia wiersza poleceń dostępnego w każdym Windowsie. Otwórz wiersz poleceń jako administrator.
Utworzenie zadania codziennego o 7:00, uruchamiającego skrypt batch:
schtasks /create /tn "Backup Dane" /tr "C:\Skrypty\backup.bat" /sc daily /st 07:00
Najważniejsze parametry:
/tn— nazwa zadania (task name)/tr— co uruchomić (task run): ścieżka do programu/skryptu/sc— częstotliwość:minute,hourly,daily,weekly,monthly,onlogon,onstart,onidle/st— godzina startu w formacieHH:MM/ru— konto, na którym zadanie ma działać (np.SYSTEMdla pracy w tle bez hasła)/mo— modyfikator, np. co ile dni/minut
Pozostałe operacje na istniejącym zadaniu:
- Uruchom teraz:
schtasks /run /tn "Backup Dane" - Zatrzymaj:
schtasks /end /tn "Backup Dane" - Wypisz wszystkie zadania:
schtasks /query /fo LIST /v - Usuń:
schtasks /delete /tn "Backup Dane" /f
Nowocześniej: PowerShell i moduł ScheduledTasks
Jeśli piszesz skrypty PowerShell, masz do dyspozycji moduł ScheduledTasks z czytelnymi poleceniami. Daje większą kontrolę niż schtasks i lepiej współgra z resztą Twojego kodu. Pełne zadanie składasz z trzech klocków — akcji, wyzwalacza i rejestracji:
$akcja = New-ScheduledTaskAction -Execute "powershell.exe" -Argument "-File C:\Skrypty\raport.ps1"
$wyzwalacz = New-ScheduledTaskTrigger -Daily -At 7am
Register-ScheduledTask -TaskName "Raport dzienny" -Action $akcja -Trigger $wyzwalacz -RunLevel Highest
Parametr -RunLevel Highest odpowiada zaznaczeniu „najwyższe uprawnienia”. Przydatne polecenia uzupełniające: Get-ScheduledTask (lista), Start-ScheduledTask (uruchom ręcznie), Get-ScheduledTaskInfo (kiedy ostatnio działało i z jakim wynikiem), Unregister-ScheduledTask (usuń). To Get-ScheduledTaskInfo docenisz przy diagnostyce — zwraca LastRunTime i LastTaskResult, czyli kod wyjścia ostatniego uruchomienia.
Zarządzanie, edycja i historia zadań
Gdy zadanie już istnieje, w środkowej części okna klikasz na nie i w panelu po prawej masz komplet operacji: Uruchom (test bez czekania na wyzwalacz), Zakończ, Wyłącz (zostawia zadanie, ale je wstrzymuje), Właściwości (edycja wszystkich zakładek) i Usuń.
Najważniejsze przy debugowaniu są dwie informacje w dolnym panelu: Ostatni czas uruchomienia i Wynik ostatniego uruchomienia. Ten drugi to kod statusu. 0x0 oznacza sukces. Inne wartości, które warto znać:
0x41301— zadanie aktualnie działa (to nie błąd)0x1— ogólny błąd aplikacji, najczęściej zła ścieżka lub brak uprawnień0x41303— zadanie nie zostało jeszcze ani razu uruchomione
Domyślnie Historia zadania jest wyłączona. Włącz ją w panelu Akcje przyciskiem Włącz historię wszystkich zadań — wtedy w zakładce Historia wybranego zadania zobaczysz dokładny log: kiedy się odpaliło, czy akcja się powiodła i z jakim kodem zakończyła. To pierwsze miejsce, do którego zaglądasz, gdy coś nie działa.
Najczęstszy problem: zadanie się nie uruchamia
Klasyk — zadanie wygląda dobrze, a nic się nie dzieje. Przejdź po tej liście:
- Konto i logowanie. Zaznaczyłeś „Uruchom niezależnie od tego, czy użytkownik jest zalogowany”, ale nie podałeś hasła albo hasło konta się zmieniło. Zadanie wtedy milczy. Wejdź we Właściwości i ustaw konto ponownie.
- Brak uprawnień. Skrypt robi coś administracyjnego, a zadanie nie ma najwyższych uprawnień — akcja zawodzi z
0x1. Zaznacz tę opcję w zakładce Ogólne. - Warunek baterii. Na laptopie w Warunkach domyślnie zaznaczone jest „Uruchom zadanie tylko wtedy, gdy komputer jest zasilany z sieci”. Na baterii nic się nie odpali — odznacz, jeśli ma działać zawsze.
- Ścieżki względne. Skrypt zakłada, że jest w swoim folderze, ale Task Scheduler uruchamia go z
C:\Windows\System32. Ustaw pole Rozpocznij w na katalog skryptu. - Złe wskazanie skryptu. Wskazałeś
.ps1jako program zamiast podaćpowershell.exez argumentem-File. System nie wie, czym to otworzyć. - Komputer był wyłączony. Zaplanowana godzina minęła, gdy maszyna spała. W Ustawieniach włącz „Uruchom zadanie najszybciej jak to możliwe po pominięciu zaplanowanego uruchomienia”.
Import, eksport i przenoszenie zadań
Każde zadanie da się zapisać jako plik XML — to wygodne przy przenoszeniu konfiguracji na inny komputer albo trzymaniu jej w repozytorium. Zaznacz zadanie i w panelu Akcje wybierz Eksportuj, podaj nazwę pliku .xml. Na docelowej maszynie kliknij Importuj zadanie i wskaż ten plik — wszystkie wyzwalacze, akcje i warunki przeniosą się w komplecie.
Z linii poleceń robisz to samo przez schtasks: eksport to schtasks /query /tn "Backup Dane" /xml > backup.xml, a import: schtasks /create /tn "Backup Dane" /xml backup.xml. Możesz też zarządzać zadaniami na zdalnym komputerze — w aplikacji graficznej przez Akcja → Połącz z innym komputerem, a w schtasks dorzucając parametr /s NAZWA_KOMPUTERA z odpowiednimi poświadczeniami.
Task Scheduler kontra alternatywy
Harmonogram jest świetny do automatyzacji jednej maszyny, ale warto wiedzieć, gdzie kończą się jego granice:
- cron (Linux/macOS) — ten sam pomysł, inna składnia. Jeśli przesiadasz się na Linuksa, regułę z Task Schedulera zapiszesz w jednej linijce
crontab. - WSL — jeśli pracujesz w Windows Subsystem for Linux, cron w środku WSL nie chodzi sam z siebie po restarcie; pewniejsze jest odpalanie zadań WSL właśnie z Task Schedulera.
- CI/CD (GitHub Actions, cron w chmurze) — gdy zadanie nie musi działać na Twoim komputerze, a w chmurze (np. nocny build czy scraper), harmonogram lokalny przestaje mieć sens. Wtedy lepszy jest scheduled workflow.
Dla codziennej automatyzacji desktopa i serwera Windows — backupów, sprzątania, raportów — Task Scheduler w zupełności wystarcza i nic nie kosztuje.
FAQ — Harmonogram zadań Windows
Jak szybko otworzyć Harmonogram zadań?
Naciśnij Win + R, wpisz taskschd.msc i zatwierdź Enterem. To najszybsza droga, działa na każdym Windowsie od 7 do 11.
Czy zadanie zadziała, gdy nie jestem zalogowany?
Tak, ale musisz w zakładce Ogólne zaznaczyć „Uruchom niezależnie od tego, czy użytkownik jest zalogowany” i podać hasło konta. Bez tego zadanie czeka na Twoje zalogowanie.
Jak uruchomić skrypt PowerShell z Harmonogramu?
W polu Program/skrypt wpisz powershell.exe, a w argumentach -ExecutionPolicy Bypass -File "C:\sciezka\skrypt.ps1". Nie wskazuj pliku .ps1 bezpośrednio jako programu — system nie wie, czym go otworzyć.
Dlaczego moje zadanie się nie wykonało?
Najczęstsze przyczyny: brak najwyższych uprawnień, nieaktualne hasło konta, warunek „tylko na zasilaniu sieciowym” na laptopie albo komputer był wyłączony o zaplanowanej godzinie. Sprawdź zakładkę Historia i pole Wynik ostatniego uruchomienia — 0x0 to sukces, inne kody wskazują na konkretny błąd.
Czy Task Scheduler to to samo co cron?
To najbliższy odpowiednik crona z Linuksa, ale bogatszy — reaguje nie tylko na czas, lecz także na zdarzenia systemowe: logowanie, start systemu, bezczynność czy konkretny wpis w dzienniku zdarzeń. Zasada działania jest ta sama, różni się interfejs i składnia.

