İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.




Kategori: Genel
Fırat Boyan 21.03.2018 10

BATCH Dosyası İle Bir Klasör İçeriğini İle Otomatik Silme

Batch Script ile TEMP klasörünün silinmesi, sistem performansını optimize etmek ve geçici dosyaların biriktirdiği gereksiz yer kaplamayı önlemek için sıkça kullanılan bir yöntemdir. TEMP klasörü, genellikle sistem ve uygulamaların geçici olarak oluşturduğu dosyaların depolandığı bir alandır. Bu dosyalar, bir süre sonra gereksiz hale gelir ve Disk'te fazladan yer kaplayarak performans sorunlarına yol açabilir. Bu nedenle, belirli aralıklarla TEMP klasörünün düzenli olarak temizlenmesi önemlidir.

Silme işlemi teknik olarak, geçici dosyaların sistem tarafından hâlâ kullanılıyor olup olmadığının kontrol edilmesini gerektirir. TEMP klasöründeki bazı dosyalar aktif olarak kullanıldığında, silme işlemi başarısız olabilir veya kısmi bir temizlik gerçekleşebilir. Bu durumun önüne geçmek için, Batch Script'lerde işlemi belirli bir süre boyunca tekrar eden döngülerde çalıştırmak ya da dosya kilitleme durumunu analiz eden kontroller eklemek önemlidir. Bu sayede, geçici olarak kilitlenmiş dosyalar bile işlem sonunda silinebilir.

TEMP klasörünü silerken dikkat edilmesi gereken diğer bir konu da, bu klasörün bir kısmının sistem tarafından sürekli yeniden kullanılabilir olmasıdır. Windows işletim sistemleri, bu tür klasörleri belirli işlemler için sürekli olarak oluşturur ve kullanır. TEMP klasöründeki bazı dosyaların silinememesinin sebebi bu olabilir. Sistem ve uygulamaların çalışmaya devam etmesi için gerekli olan bu dosyalar, kullanımda olduğunda silinmeleri engellenir. Ancak, kullanımı bitmiş ya da artık gerekli olmayan dosyalar kolayca silinebilir.

Silme işlemi yapılırken, Disk'te yer açmanın yanı sıra sistemin genel sağlığını korumak için de TEMP klasörünün düzenli olarak temizlenmesi önerilir. Özellikle büyük uygulamaların çalıştırıldığı sistemlerde, TEMP klasörü hızla dolabilir ve bu da hem depolama alanını azaltır hem de uygulamaların performansını olumsuz etkileyebilir. Silme işlemi sonrasında sistem performansında gözle görülür bir iyileşme sağlanabilir.

TEMP klasörü, aynı zamanda güvenlik açısından da kritik olabilir. Kötü niyetli yazılımlar ya da zararlı dosyalar, bu klasörü kullanarak geçici veriler oluşturabilir. Bu yüzden, TEMP klasörünün temizlenmesi yalnızca performans değil, aynı zamanda güvenlik açısından da faydalıdır. TEMP klasöründeki dosyalar dikkatle incelenmeli ve zararlı olabilecek herhangi bir dosya silinmelidir.

Bu makalemde sizlere Windows Server 2012R2 üzerinde belli bir klasör içeriğinin otomatik olarak nasıl silineceğinden bahsediyor olacağım. Bu silme işleminde C:\Users\User Name\AppData\Local\Temp dizinindeki TEMP klasörünün Task Scheduler (Görev Zamanlayıcı) ile bir Schedule'a (zaman planı) bağlayarak belirleyeceğimiz zaman aralıklarında düzenli olarak silinmesini sağlayacağız. Silmek istediğim TEMP klasörü dizini C:\Users\Administrator\AppData\Local\Temp aşağıdaki gibidir.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Bu dizin içeriğini bir Schedule'a (zaman planı) bağlayarak düzenli olarak silinmesini sağlamak için Task Scheduler (Görev Zamanlayıcı) kullanacağım ancak klasör içerğini silmek için öncelikle bir komut satırına ihitiyacım var. Gerekli olan komut satırlarım 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" /s/q)

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Bu komut satırlarını bir Text (metin dosası) içine alarak ismini RemoveFolderContent olarak belirleyip .txt uzantısını .bat şeklinde hazırlıyorum.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

 .BAT (Batch) Dosyasının Task Scheduler'a Atanması

Bundan sonraki adımda ise sıra, oluşturulan .bat dosyasının Task Scheduler'a (Görev Zamanlayıcısı) atanması işlemine geldi. Bunun için Task Scheduler'ı çalıştırıyorum.

1- Task Scheduler üzerinde Task Scheduler (local) sağ tıklayarak Create Task... seçeneğini seçiyorum.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

2- Karşıma çıkan Create Task penceresinde;

2.1- General sekmesinde Schedule'ım (zaman planı) için bir isim belirliyorum. Ben .bat dosyamla aynı isimdeki TEMPFolderCleanUP adını veriyorum. Security Options alanında herhangi bir işlem yapmaya gerek yok ki zaten konumuzu da kapsamıyor.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

2.2- Actions sekmesinde Schedule'ım (zaman planı) için çalıştıracağım .bat (Batch) uzantılı dosyanın yolunu tanımlamam gerekiyor. Bu sekmede iken New... butonuna basıyorum.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

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.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

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

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

2.4- Triggers sekmesinde, Actions sekmesinde zaman planım için dizin yolunu tanımladığım .bat uzantılı dosyanın çalışması için tetiklenme süresini belirlemem gerekiyor. Bunun için öncelikle New... butonuna basıyorum.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

2.5- New Trigger penceresinde, .bat uzantılı dosyanın çalışması için tetiklenme zamanını her hafta Cumartesi ve Pazar günleri saat 00:05 olarak ayarlıyorum.

 Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

 Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

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

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

4- .bat uzantılı dosyanın çalışması için tetiklenme zamanını her hafta Cumartesi ve Pazar günleri saat 00:05 olarak ayarlamıştım. Saat tam 00:05'ta .bat uzantılı dosyam çalıştı ve belirttiğim dizindeki temp dosyalarının tamamını sildi.

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Klasör İçeriğini Komutla bat dosyasından Otomatik Silme

Böylece, TEMP klasörünün Task Scheduler (Görev Zamanlayıcı) ile bir Schedule'a (zaman planı) bağlayarak belirleyeceğimiz zaman aralıklarında düzenli olarak silinmesini başarılı bir şekilde sağlamış olduk.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim.

2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde onlarca farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin önde gelen entegratör firmalarından olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum.

Ek olarak, 2015 yılında Network Akademi bünyesinde Microsoft Certified Trainer (MCT) ünvanı ile Sistem ve Network Uzmanlık eğitimleri vermeye başladım. Sistem ve Network Uzmanlığı alanındaki eğitmenlik serüvenime Network Akademi bünyesinde devam etmekteyim.

YORUMLAR
Bu makaleye 10 yorum yapıldı.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.


750 karakter yazabilirsiniz.
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.


09.09.2022 Asa
Merhaba ben bu .bat dosyasını çalılştırdıktan sonra masaüstümdeki herşey silindi ne yapacağım ??

11.09.2022 Fırat Boyan
Dizin yolu oluarak Desktop gösterdiğin için silinmiştir. Başka bir açıklaması olamaz. Ben bu makaleyi oluştururken yaptığım uygulamada böyle bie sorun oluşmadı.


20.09.2021 Murat
hocam teşekkür ederiz çok makbule geçti, lakin komutları siteden kopyalayabiliyor olsaydık çok daha iyi olurdu.

20.09.2021 Fırat Boyan
Merhaba Murat. Sadece komutların koplayanabilmesi için gerekli güncellemeleri yapıyorum. Su sayfada da gerçekleştirdim.


16.06.2021 Hasan Karabulut
Merhaba, bir dosyanın belirli bir büyüklüğe ulasmadıgında mesela,günlük 1 gb tın altında kaldığı zaman bir uyarı scripti olusturmak istiyorum yardımcı olabilirmisiniz
29.03.2019 bülen yıldırım
merhaba aynı klasörün içindeki sadece tüm pdf leri yada tüm jpg leri silecek şekilde kodu nasıl değiştirebiliriz? Teşekkürler

04.04.2019 Fırat Boyan
Merhaba, bu şekilde bir filtreleme yapmadım ancak bir dener, buraya sonucunu bildiririm.


25.04.2018 Enes
Güzel konu için teşekkürler hocam. Peki yine belli bir klasör içerisinde birçok dosya ve klasör var sabit olarak ve bunlara ek olarak hergün 1 adet backup klasörü(günayyılsaat ismi ile) ekleniyor ve bu hergün devam ediyor. Ben bat dosyası ile sadece yeni oluşan backup dosyasını nasıl alabilirim acaba. Belki karışık anlatmış olabilirim şu şekilde örneklendireyim : Bir adet "program" isminde klasör var ve bu klasör içerisinde programın kendi çalışmasını sağlayacak dosya ve klasörler var sabit. Hergün belli saatte bir adet backup klasörü "program" klasörü içerisine gün ay yıl saat olarak isimlendirilerek ekleniyor. Ben sadece backup dosyasını bat ile istediğim konuma kopyalamak istiyorum. Teşekkürler.

25.04.2018 Fırat Boyan
Merhaba Enes, Bir dene bakalım. Benim bakma şansım olmamıştı henüz :) Haber verirsen çok iyi olur.

25.04.2018 Enes
Sanırım ihtiyacımı bu parametre karşılayacak. "/d {:AA-GG-YYY: " Teşekkürler:)