Belirli bir saat veya dakikadan eski dosyaları sildirmek


vbs ile belirli dakiadan eski dosyaalrı sildirmek

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

takipçimizde aynı işi belirli bir saat veya dakikadan eski dosyalar için gerçekleştirmek istediğini ve nasıl yapabileceğini sordu Burada , normal kullanıcılar pek kullanmasada sistem Adminlerinin log temizliğinde çokça başvurdukları yöntemlerden biride belirli bir gün , saat , dakikadan eski logları otomatik sildirtmektir , bu yazı konumuz bu işin bir vbs scripti ile nasıl yapılabileceği konusuna açıklık getirmektir.

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

Dosya değişitirilme tarihi

Ü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.

Dosyalar silindi

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

Download



Yorum Ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

CAPTCHA