Teknoloji, Bilim ve Akıl
Windows Görev Zamanlayıcı ile Otomatik Görev Nasıl Oluşturulur?
İşletim Sistemleri

Windows Görev Zamanlayıcı ile Otomatik Görev Nasıl Oluşturulur?

5 dk okuma 10 okunma 0 yorum
Kısaca: Windows Görev Zamanlayıcı, bir programın veya betiğin belirli bir saatte, açılışta ya da bir olay gerçekleştiğinde kendiliğinden çalışmasını sağlar. Görev taskschd.msc arayüzünden veya schtasks komutuyla oluşturulur.
İçindekiler
  1. Windows Görev Zamanlayıcı Nedir?
  2. Görev Zamanlayıcı Nasıl Açılır?
  3. Temel Görev ile Görev Oluştur Arasındaki Fark Nedir?
  4. Görev Oluştururken Hangi Sekmeler Ayarlanır?
  5. Genel Sekmesi
  6. Tetikleyiciler Sekmesi
  7. Eylemler Sekmesi
  8. Koşullar ve Ayarlar Sekmeleri
  9. schtasks Komutu ile Görev Nasıl Oluşturulur?
  10. PowerShell ile Görev Nasıl Oluşturulur?
  11. Örnek: Robocopy ile Otomatik Gece Yedeklemesi
  12. Görev Neden Çalışmıyor? Sık Karşılaşılan Sorunlar
  13. Sahadan Gözlem: Ağ Yolu Tuzağı
  14. Görev Zamanlayıcı Kullanırken İyi Uygulamalar

Windows Görev Zamanlayıcı ile otomatik görev oluşturmak için Win + R tuşlarına basıp taskschd.msc yazın, sağ paneldeki Görev Oluştur seçeneğini tıklayın, ardından tetikleyici olarak zamanı veya olayı, eylem olarak da çalıştırılacak programı belirleyin. Aynı işlem komut satırında schtasks komutuyla tek satırda da yapılabilir. Görev kaydedildikten sonra Windows, belirlediğiniz koşul oluştuğunda programı sizin yerinize çalıştırır.

Bu yazıda Görev Zamanlayıcı arayüzünü, tetikleyici ve koşul ayarlarını, schtasks ve PowerShell komutlarını, gece yedeklemesi gibi gerçek örnekleri ve görev çalışmıyor sorununun en yaygın sebeplerini ele alacağız.

Windows Görev Zamanlayıcı Nedir?

Görev Zamanlayıcı (Task Scheduler), Windows ile birlikte gelen ve programları, betikleri veya komutları belirli koşullara bağlı olarak otomatik çalıştıran bir sistem bileşenidir. Windows Update, disk birleştirme ve bazı güvenlik taramaları da arka planda bu bileşen üzerinden çalışır.

Linux dünyasındaki cron aracının Windows karşılığı olarak düşünülebilir. Ancak Görev Zamanlayıcı yalnızca zamana değil; oturum açma, bilgisayarın boşta kalması, belirli bir olay günlüğü kaydı gibi pek çok farklı tetikleyiciye de tepki verebilir.

Görev Zamanlayıcı Nasıl Açılır?

  • Çalıştır penceresi: Win + R tuşlarına basıp taskschd.msc yazın.
  • Başlat menüsü: Arama kutusuna Görev Zamanlayıcı yazın.
  • Bilgisayar Yönetimi: Win + X menüsünden Bilgisayar Yönetimi altında Görev Zamanlayıcı bölümünü açın.

Sol panelde Görev Zamanlayıcı Kitaplığı bulunur. Kendi görevlerinizi burada ayrı bir klasör açarak tutmak, sistem görevleriyle karışmasını önler ve bakımı kolaylaştırır.

Temel Görev ile Görev Oluştur Arasındaki Fark Nedir?

Sağ panelde iki seçenek bulunur. Temel Görev Oluştur sihirbaz şeklinde ilerler ve basit zamanlamalar için yeterlidir. Görev Oluştur ise tüm ayarlara erişim sağlar.

Sunucu veya iş bilgisayarı üzerinde çalışacak görevlerde her zaman Görev Oluştur seçeneğini kullanmak daha doğrudur. Çünkü görevin oturum açılmadan çalışması, yönetici yetkisi ve hata durumunda yeniden deneme gibi kritik ayarlar yalnızca bu ekranda bulunur.

Görev Oluştururken Hangi Sekmeler Ayarlanır?

Genel Sekmesi

Görevin adı ve açıklaması burada yazılır. En önemli ayar, görevin hangi kullanıcı ile çalışacağıdır.

  • Yalnızca kullanıcı oturum açtığında çalıştır: Görev yalnızca siz oturumdayken çalışır, pencere görünür.
  • Kullanıcı oturum açmış olsun veya olmasın çalıştır: Görev arka planda çalışır, parola kaydedilir. Sunucu görevleri için doğru seçenektir.
  • En yüksek ayrıcalıklarla çalıştır: Yönetici yetkisi gereken işlemler için işaretlenmelidir.

Tetikleyiciler Sekmesi

Tetikleyici Ne Zaman Çalışır? Örnek Kullanım
Zamanlamaya göre Bir kez, günlük, haftalık veya aylık Gece yedeklemesi
Oturum açıldığında Kullanıcı Windows oturumu açtığında Ağ sürücüsü bağlama
Başlangıçta Bilgisayar açıldığında, oturumdan önce Servis benzeri uygulamalar
Boştayken Bilgisayar belirli süre boşta kaldığında Temizlik ve bakım işleri
Bir olayda Olay günlüğüne belirli kayıt düştüğünde Hata oluşunca bildirim

Zamanlama tetikleyicisinde Görevi yinele seçeneği ile görev örneğin her 15 dakikada bir tekrarlanabilir. Bu özellik, gün içinde sık çalışması gereken senkronizasyon işleri için kullanışlıdır.

Eylemler Sekmesi

Eylem olarak neredeyse her zaman Program başlat seçilir. Üç alan bulunur:

  • Program veya betik: Çalışacak dosyanın tam yolu.
  • Bağımsız değişken ekle: Programa verilecek parametreler.
  • Başlangıç yeri: Programın çalışma klasörü. Bu alan boş bırakılırsa pek çok betik göreli yollarla dosya bulamaz.

Koşullar ve Ayarlar Sekmeleri

Koşullar sekmesinde varsayılan olarak Bilgisayar AC güçteyse başlat seçeneği işaretlidir. Dizüstü bilgisayarlarda pil ile çalışırken görevin başlamamasının sebebi çoğu zaman budur. Ayarlar sekmesinde ise zamanlanmış başlangıç kaçırılırsa görevi en kısa sürede çalıştır ve görev başarısız olursa yeniden başlat seçenekleri mutlaka değerlendirilmelidir.

schtasks Komutu ile Görev Nasıl Oluşturulur?

Aynı görevi birden fazla bilgisayara kurmanız gerekiyorsa arayüz yerine komut satırı çok daha hızlıdır. Yönetici olarak açılmış bir komut isteminde şu komutlar kullanılır:

:: Her gece 02:00 da yedek betiğini SYSTEM hesabıyla çalıştır
schtasks /Create /TN "Zek\GeceYedegi" /TR "C:\Scripts\yedek.bat" /SC DAILY /ST 02:00 /RU SYSTEM /RL HIGHEST

:: Her 30 dakikada bir çalışan görev
schtasks /Create /TN "Zek\Senkron" /TR "C:\Scripts\senkron.bat" /SC MINUTE /MO 30

:: Hafta içi her gün 18:30 da bilgisayarı kapat
schtasks /Create /TN "Zek\MesaiSonuKapat" /TR "shutdown /s /t 300" /SC WEEKLY /D MON,TUE,WED,THU,FRI /ST 18:30

:: Görevleri listele
schtasks /Query /TN "Zek\GeceYedegi" /V /FO LIST

:: Görevi hemen çalıştır
schtasks /Run /TN "Zek\GeceYedegi"

:: Görevi devre dışı bırak
schtasks /Change /TN "Zek\GeceYedegi" /DISABLE

:: Görevi sil
schtasks /Delete /TN "Zek\GeceYedegi" /F

Görev adındaki ters eğik çizgi, görevi Görev Zamanlayıcı Kitaplığı altında Zek adlı bir klasöre yerleştirir. Kendi görevlerinizi bu şekilde gruplamak, onları sistem görevleri arasında aramak zorunda kalmamanızı sağlar.

PowerShell ile Görev Nasıl Oluşturulur?

PowerShell, daha ayrıntılı ayarlar gerektiğinde schtasks komutundan daha esnektir:

$eylem   = New-ScheduledTaskAction -Execute "C:\Scripts\yedek.bat" -WorkingDirectory "C:\Scripts"
$tetik   = New-ScheduledTaskTrigger -Daily -At 2am
$ayarlar = New-ScheduledTaskSettingsSet -StartWhenAvailable -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 10)

Register-ScheduledTask -TaskName "GeceYedegi" -TaskPath "\Zek\" `
    -Action $eylem -Trigger $tetik -Settings $ayarlar `
    -User "SYSTEM" -RunLevel Highest

Bu örnekte başlangıç klasörü tanımlanmış, kaçırılan görevin en kısa sürede çalışması ve hata durumunda on dakika arayla üç kez yeniden denenmesi ayarlanmıştır.

Örnek: Robocopy ile Otomatik Gece Yedeklemesi

Görev Zamanlayıcının en yaygın kullanımı dosya yedeklemesidir. Aşağıdaki betik bir klasörü ağdaki bir paylaşıma yansıtır ve sonucu günlük dosyasına yazar:

@echo off
set KAYNAK=D:\Veriler
set HEDEF=\\YEDEKSUNUCU\Yedek\Veriler
set LOG=C:\Scripts\log\yedek_%date:~-4%%date:~3,2%%date:~0,2%.txt

robocopy "%KAYNAK%" "%HEDEF%" /MIR /R:2 /W:5 /NP /LOG:"%LOG%"

if %ERRORLEVEL% GEQ 8 (
    echo Yedekleme hatali bitti >> C:\Scripts\log\hatalar.txt
)

Robocopy çıkış kodlarında 8 ve üzeri değerler hata anlamına gelir. 0 ile 7 arasındaki değerler ise kopyalama durumunu bildiren başarılı sonuçlardır. Bu yüzden Görev Zamanlayıcı ekranında son çalıştırma sonucu 0x1 veya 0x3 görünmesi robocopy için sorun değildir.

Dikkat: /MIR parametresi hedefi kaynağın birebir aynısı yapar. Kaynakta silinen dosya hedefte de silinir. Geçmiş sürüm tutmak istiyorsanız farklı tarihli klasörlere yedek almayı tercih edin.

Görev Neden Çalışmıyor? Sık Karşılaşılan Sorunlar

Belirti Olası Sebep Çözüm
Elle çalışıyor, zamanlanınca çalışmıyor Başlangıç yeri boş, göreli yollar bulunamıyor Başlangıç yeri alanını doldurun veya tam yol kullanın
Ağ klasörüne yazamıyor Eşlenmiş sürücü harfi arka planda yok Z: yerine UNC yolu kullanın
Dizüstünde başlamıyor AC güç koşulu işaretli Koşullar sekmesinden kaldırın
Son sonuç 0x1 Betik hata ile bitti Betiği günlük dosyasına yazdırıp inceleyin
Parola değişince durdu Görev eski parolayla kayıtlı Görevi yeni parolayla güncelleyin veya SYSTEM kullanın
Çalıştı ama iz yok Geçmiş kaydı kapalı Sağ panelden Tüm Görev Geçmişini Etkinleştir

Sahadan Gözlem: Ağ Yolu Tuzağı

Fabrika sunucusunda gece yedeklemesini ilk kurduğumuzda betik elle çalıştırıldığında sorunsuz çalışıyor, zamanlanmış görev olarak ise her gece hata veriyordu. Sebep, betikte kullanılan eşlenmiş ağ sürücüsü harfiydi. Eşlenmiş sürücüler kullanıcı oturumuna aittir. Görev arka planda veya SYSTEM hesabıyla çalıştığında o harf mevcut değildir.

Sürücü harfi yerine \\sunucu\paylasim biçiminde UNC yolu kullanıldığında ve hedef paylaşıma bilgisayar hesabı için yazma izni verildiğinde sorun tamamen çözüldü. İkinci ders ise görev geçmişini baştan açmak oldu. Geçmiş kapalıyken görevin çalışıp çalışmadığını anlamak neredeyse imkansızdır.

Görev Zamanlayıcı Kullanırken İyi Uygulamalar

  1. Kendi görevlerinizi ayrı bir klasörde toplayın.
  2. Görev açıklamasına ne yaptığını ve kimin kurduğunu yazın.
  3. Betiklerde her zaman tam dosya yolu kullanın.
  4. Her görevin çıktısını tarihli bir günlük dosyasına yazdırın.
  5. Kaçırılan görevi en kısa sürede çalıştır seçeneğini açın.
  6. Kritik görevlerde hata durumunda yeniden deneme ayarlayın.
  7. Görevleri dışa aktararak XML yedeğini saklayın.

Sık Sorulan Sorular

Görev Zamanlayıcı bilgisayar kapalıyken çalışır mı?
Hayır. Bilgisayar kapalıyken görev çalışmaz. Ancak Koşullar sekmesindeki bilgisayarı uyandır seçeneği ile uyku modundaki bilgisayar uyandırılabilir. Kaçırılan görevlerin açılışta çalışması için ise Ayarlar sekmesindeki ilgili seçenek işaretlenmelidir.
Görev çalışırken siyah komut penceresi açılmasını nasıl engellerim?
Görevi kullanıcı oturum açmış olsun veya olmasın çalıştır seçeneğiyle ya da SYSTEM hesabıyla kaydettiğinizde görev arka planda çalışır ve pencere görünmez.
Oluşturduğum görevi başka bilgisayara nasıl taşırım?
Göreve sağ tıklayıp Dışarı Aktar seçeneğiyle XML dosyası olarak kaydedin. Diğer bilgisayarda Görev İçeri Aktar ile bu dosyayı yükleyebilir veya schtasks /Create /XML komutunu kullanabilirsiniz.
Son çalıştırma sonucu 0x41301 ne anlama gelir?
Bu kod, görevin şu anda çalışmakta olduğunu gösterir. Görev uzun süre bu durumda kalıyorsa program kapanmıyor veya bir onay penceresi bekliyor olabilir.
Görev Zamanlayıcı ile PHP betiği çalıştırılabilir mi?
Evet. Program alanına php.exe yolunu, bağımsız değişken alanına betiğin tam yolunu yazarak PHP betikleri de zamanlanabilir. Başlangıç yeri alanını betiğin bulunduğu klasör olarak ayarlamak göreli yol sorunlarını önler.
Ramazan Yeşildal
Ramazan Yeşildal

Karaman merkezli bilgi teknolojileri yöneticisi ve bağımsız yazılım geliştirici.

0 Yorum

Yorum yazın

E-posta adresiniz yayınlanmaz. Yorumlar onaydan sonra görünür.