Belirli bir saat veya dakikadan eski dosyaları sildirmek


Belirli süreden eski dosyaları sildirt
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 yöneticilerin 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 vbscript 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 oluşturduğum text dosyalarını attım.

Dosya değiştirilme tarihi

Üstteki resimde Değiştirilme tarihi sütununa dikkat edelim bu sütun 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 Kullanı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 istediğiniz dosyalar sistem dizininde ise ve erişim veya yetki sorunu çıkarsa Buradaki yöntemi 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 indirebilirsiniz

- Powershell komutları ile dosya veya Klasör silmek Burada

- Arka planda çalışıp belirli bir dosyayı bulursa silen vbscript Burada

- Belirli bir Günden eski dosyaları silme yöntemleri Burada

- Belirli bir günden (Mesela 1 ay) eski dosyaları silmek Burada

29 Ocak 2016 Tarihli başlık güncellendi


8 Yorum Var
  1. Avatar for Velociraptor
  2. Avatar for Mehmet Özmen
  3. Avatar for Ahmet
  4. Avatar for Velociraptor
  5. Avatar for Mustafa
  6. Avatar for burak
  7. Avatar for Velociraptor
  8. Avatar for gülcan

Yorum Ekle

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Captcha