15 Ocak 2013 Salı

Windows'ta başlangıç komutlarını arkaplanda çalıştırmak

Bir Windows sistemde belirli aralıklarla sonsuz bir döngüde bir komutun çalışmasına ve bu işin sistem açılışında MSDOS penceresi olmadan arkaplanda başlamasına ihtiyacım oldu. Linux tecrübelerime dayanarak bu işin oldukça kolay olabileceğini sanmıştım ama hiç de öyle değilmiş. Bu işi yapmak için araçlar vardır mutlaka ama böyle basit bir şey için ek yazılım kullanmak... Önce CMD, START ve CALL komutlarının parametrelerine bakmaya başladım, işin içinden çıkamayınca Gogıllamaya ve deneme/yamulma yöntemine başladım... derken aşağıdaki çözüme ulaştım.

Çalıştırmak istediğim komutlar ve timeout parametresiye belirlediğim saniye cinsinden zaman aşımı süresini C:\run.bat dosyasına kaydediyorum. (Örnek işe yarar bir şey olsun diye TMP dizinini temizleyen bir komut yazayım)


:deltmp
del %TMP%\* /s /q
for /D %%i IN ("%TEMP%\*") do rmdir /S /Q "%%i"
timeout /t 10
goto deltmp

Sonra bunu çağıracak aşağıdaki VBScript kodunu bir run.vbs dosyasına kaydedip, kullanıcının Başlangıç menüsüne yapıştırıyorum.


Set WshShell = CreateObject("WScript.Shell")
WshShell.Run chr(34) & "C:\run.bat" & Chr(34), 0
Set WshShell = Nothing

2 yorum:

  1. Yöneticisi olmadığınız dolayısıyla bir çok ayarı değiştiremediğiniz bir bilgisayar var (Örn:İş bilgisayarı). Bu bilgisayarda windows update açık ve hergün güncelleme yapıyor bu da bilgisayarı kapatıp açarken sizi bekletiyor. Hizmetlerden Windows update'i devre dışı bırakmanıza izin verilmiyor. Naçizane benim çözümüm: Arka planda çalışacak (arka planda çalışma yukarıda bahsedildiği gibi oluyor) bir bat dosyası ile kullanıcı her oturum açtığında(bu da görev zamanlayıcıda yapılabilir) windows update'i durdurun. Bu da komut:NET STOP "Windows Update". Bu güzel paylaşım tam da bu konuda işime yaradı teşekkür ediyorum.

    YanıtlaSil
  2. nasıl yapılıyor biraz daha detaylı anlatır mısın?
    hatta youtube video atarsan sevinirim

    YanıtlaSil