Bu makalede, bir kullanıcının TEMP dizinindeki geçici dosyaların Task Scheduler ile belirleyeceğim zaman aralıklarında otomatik olarak temizlenmesini bir Batch Script üzerinden yapılandıracağım. Amaç, elle müdahale gerektirmeden TEMP içeriğini düzenli olarak boşaltmak ve Disk'te biriken gereksiz dosyaların kapladığı alanı geri kazanmaktır.
TEMP dizini, işletim sisteminin ve uygulamaların çalışma sırasında ürettiği geçici dosyaları tuttuğu yerdir. Bu dosyaların bir kısmı işlem bitince otomatik olarak temizlenir; ancak uygulama beklenmedik şekilde kapandığında ya da kendi temizlik mekanizması devreye girmediğinde dosyalar geride kalır ve zamanla ciddi bir alan tüketebilir. Yoğun uygulama çalıştıran sistemlerde bu birikim oldukça hızlıdır. Buradaki asıl kazanım Disk alanıdır; genel bir "performans artışı" beklentisi yerine, dolmaya yaklaşan bir Disk'te yer açmanın somut faydasına odaklanmak daha doğru bir yaklaşımdır.
Dikkat edilmesi gereken bir nokta var: TEMP dizinindeki dosyaların bir kısmı o an çalışan süreçler tarafından kullanımda olabilir. Kullanımdaki dosyalar kilitli olduğundan silinemez ve temizlik sırasında atlanır. Bu beklenen bir davranıştır; ilgili süreç dosyayı serbest bıraktığında, bir sonraki çalıştırmada bu dosyalar da temizlenir.
Kullanımda olan TEMP dosyaları kilitli olduğu için silinemez ve atlanır. Bu normal bir durumdur; dosya serbest kaldığında sonraki çalıştırmada temizlenir.
Bu işlemde C:\Users\User Name\AppData\Local\Temp dizinindeki geçici dosyaların, Task Scheduler (Görev Zamanlayıcı) ile bir Schedule'a (zaman planı) bağlanarak belirleyeceğim aralıklarda düzenli olarak silinmesini sağlayacağım. Temizleyeceğim TEMP dizini C:\Users\Administrator\AppData\Local\Temp aşağıdaki gibidir.

Bu dizinin içeriğini bir Schedule'a bağlamadan önce, içeriği silen komut satırına ihtiyacım var. Kullanacağım komut aşağıdaki gibidir:
set "folder=C:\Users\Administrator\AppData\Local\Temp"
cd /d "%folder%"
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s /q || del "%%i" /q)
Komutun ne yaptığına satır satır bakalım. İlk satırda folder değişkenine hedef dizin atanıyor; burada tırnak işaretini set "folder=..." biçiminde kullanmak, dizin yolunun değişkenin içine tırnaklarla birlikte gömülmesini önler ve sonraki kullanımları sağlamlaştırır. İkinci satırdaki cd /d "%folder%" ifadesi, gerekirse sürücüyü de değiştirerek hedef dizine geçer. Üçüncü satırdaki for /F döngüsü, dir /b çıktısıyla kök seviyedeki her öğeyi tek tek alır; her öğe için önce rmdir /s /q ile klasör silmeyi dener, öğe bir dosyaysa bu komut başarısız olur ve || operatörü sayesinde del /q devreye girerek dosyayı siler.
Bu komut, folder değişkeninde belirtilen dizinin tüm içeriğini geri dönüşü olmadan siler. Çalıştırmadan önce yolun doğru olduğunu mutlaka teyit edin; yanlış bir dizin ciddi veri kaybına yol açar.
Bu komut satırlarını bir Text dosyasına alıp ismini RemoveFolderContent olarak belirliyor ve .txt uzantısını .bat olarak değiştirerek hazırlıyorum.

.BAT (Batch) Dosyasının Task Scheduler'a Atanması
Hazırladığım .bat dosyasını elle çalıştırmak yerine, Windows'un yerleşik aracı Task Scheduler ile belirli gün ve saatlerde otomatik tetikleyeceğim. Böylece temizlik, tekrarlayan bir görev olarak kullanıcı müdahalesi olmadan çalışır. Task Scheduler tarafında dikkat edilmesi gereken iki konu var: görevin hangi hesapla çalışacağı ve yeterli yetkiyle çalışıp çalışmayacağı. Silinecek dizin, görevi çalıştıran hesabın kendi TEMP'iyse, o hesap aktifken bazı dosyalar kilitli kalacağından tam temizlik garanti edilmez. Bunu aşağıdaki adımlarda netleştireceğim.
Sıra, oluşturduğum .bat dosyasının Task Scheduler'a atanmasına geldi. Bunun için Task Scheduler'ı çalıştırıyorum.
1- Task Scheduler üzerinde Task Scheduler (Local) öğesine sağ tıklayarak Create Task... seçeneğini seçiyorum.

2- Karşıma çıkan Create Task penceresinde aşağıdaki yapılandırmaları yapıyorum.
2.1- General sekmesinde Schedule'ım için bir isim belirliyorum. .bat dosyamla aynı isimde, TEMPFolderCleanUP adını veriyorum. Security Options alanı bu senaryoda önemlidir: Temizliğin dizin üzerinde yeterli yetkiyle çalışması için Run with highest privileges seçeneğini işaretliyorum. Görevin oturum açık olmasa da çalışması gerekiyorsa Run whether user is logged on or not seçilmelidir. Ayrıca görevi çalıştıracak hesabı bilinçli seçin: hedef dizin o hesabın kendi TEMP'iyse, hesap aktifken bazı dosyalar kilitli kalacağından kısmi temizlik yaşanabilir.

2.2- Actions sekmesinde, Schedule'ım için çalıştıracağım .bat uzantılı dosyanın yolunu tanımlamam gerekiyor. Bu sekmedeyken New... butonuna basıyorum.

2.3- New Action penceresinde Action ve Program/script alanlarını yapılandırıyorum.
2.3.1- Action altında Start a program seçeneğini seçiyorum.


2.3.2- Program/script alanında .bat uzantılı dosyanın yolunu gösteriyorum.


2.4- Triggers sekmesinde, Actions sekmesinde yolunu tanımladığım .bat dosyasının ne zaman çalışacağını belirlemem gerekiyor. Bunun için New... butonuna basıyorum.

2.5- New Trigger penceresinde, dosyanın tetiklenme zamanını her hafta Cumartesi ve Pazar günleri saat 00:05 olarak ayarlıyorum.



3- C:\Users\Administrator\AppData\Local\Temp dizinindeki geçici dosyalar aşağıdaki gibidir.

4- Tetiklenme zamanını her hafta Cumartesi ve Pazar günleri saat 00:05 olarak ayarlamıştım. Saat tam 00:05'te .bat dosyam çalıştı ve belirttiğim dizindeki temp dosyalarını sildi. Kullanımda olan dosyalar varsa, daha önce belirttiğim gibi bunlar kilitli olduğundan atlanmış olabilir.



Böylece TEMP dizini içeriğinin, Task Scheduler ile bir Schedule'a bağlanarak belirlediğim aralıklarda düzenli olarak silinmesini sağlamış oldum.
Bir .bat dosyasıyla klasör içeriğini otomatik silmek, tekrarlayan bir bakım işini elle müdahale olmadan yürütmenin pratik bir yoludur. Bu yaklaşımın değeri, işlemi tek bir dizinle sınırlamasında: folder değişkeninde belirtilen yol dışında hiçbir yere dokunmadığı için, doğru yapılandırıldığında sistem genelinde istenmeyen bir etki oluşturmaz. Bu nedenle dizin yolunu her zaman dikkatle doğrulamak gerekir.
İster geçici dosyaların düzenli temizliği, ister Disk alanının kontrol altında tutulması için olsun, bu yöntem düşük maliyetli ve güvenilir bir otomasyon sağlar.
Faydalı olması dileğiyle...
Makale ile ilgili düşüncelerinizi ve sorularınızı aşağıdaki yorum kısmında paylaşmaktan çekinmeyin. Her katkı, içeriğin daha fazla kişiye ulaşmasını ve daha faydalı bir tartışma ortamı oluşmasını sağlar.