Daha önceki yazılarımızdan birinde Belirli günden (mesela 1 ay) eski dosyaları sildirmek başlıklı bir yazı yayımlamıştık ve budada forfiles komutu ile belirli bir günden eski dosyaları sildirtmiştik, bir
Belirli bir dakikadan eski dosyaları silen vbs scripti
Örnek olması açısından "D" dizinime iki adet klasör açtım ve bunlara "Log1" ve "Log2" isimlerini verdim içlerine dün oluşturduğum text dosyalarını attım
Üstteki resimde Değiştirilme tarihi sütununa dikkat edelim bu tarihler bize oluşturuldukları tarihi veriyor ben bu dosyanın içerisinde yeralan dosyalardan sadece 6 saat öncesinde oluşturulmuş ve daha yeni olan dosyaların kalmasını , 6 saat ten eski olan dosyaların komple silinmesini istiyorum bunun için aşağıdaki scripti kullanacağız
strFolder = "D:\Log1\" Set objShell = CreateObject("Shell.Application") Set objFolder = objShell.Namespace(strFolder) Set objFSO = CreateObject("Scripting.FileSystemObject") For Each strFileName in objFolder.Items If len(objFSO.GetExtensionName(strFileName)) > 0 Then Set objFile = objFSO.GetFile(strFolder & strFileName.Name) If DateDiff("N",objFile.DateLastModified,Now()) > 360 Then objFSO.DeleteFile(strFolder & strFileName.Name),True End If End If Next
Scriptte bizi ilgilendiren iki kısım var:
1. Script dosya kontrol ve silme işlemini hangi klasörde yapsın (1.satır)
strFolder = "D:\Log1\" kısmını ile hangi klasörde işlem yapacağını belirtiyoruz
2. Dakika olarak kaç dakikadan eski dosyaları silsin (9.satır)
If DateDiff("N",objFile.DateLastModified,Now()) > 360 Then
kırmızı ile olan yerleri kendinize göre düzenleyin , ardından kodları not defterine yapıştırın bir isim verip uzantısı .vbs olacak şekilde kaydedin ve çift tıklayıp çalıştırın , herhangi bir uyarı vermeyecektir (Böylesi daha doğru çünkü belirli aralıklarla çalışan scriptte her zaman tamam deyip uyarıyı kapatmak zorunda kalmak can sıkıcı olacaktır) son olarak Log1 klasörümüzü kontrol ediyoruz ve içerisinde sadece bir dosyanın kaldığını görüyoruz , yani scriptimiz tam istediğimiz gibi çalışıyor.
Burada Kulanıcının aklına şu gelebilir , üstteki scriptte tek klasör tanımlı , birden fazla klasör için nasıl uygulayabiliriz ? , cevabı yine oldukça kolay : İlk satırı aşağıdaki şekilde bir alta kopyalayıp farklı bir klasör yolu tanımlayabilirsiniz mesela
strFolder = "D:\Log1\"
strFolder = "E:\Log2\"
Eğer sildirmek sitediğiniz dosyalar sistem dizininde ise ve erişim veya yetki sorunu çıkarsa Buradaki yönetmi kullanın , Scriptin hangi gün , saat veya dakikada çalışacağını zamanlanmış görevlerden belirtebilirsiniz Burada , Üsteki scriptin hazır halini aşağıdan ndirebilirsiniz