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 oluşturduğum text dosyalarını attım.
Ü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.
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
Bunu en kolay powershell kodları ile yapabilirsiniz.Diyelimki "C:\LOG1" klasörünüz var ve bunun içindeki "x" klasörünün silinmesini istemiyorsunuz , bu durumda Aşağıdaki kodu powershell konsolundan çalıştırmanız gerekir.
Get-ChildItem -Path 'C:\LOG1' -Recurse -Exclude 'x' | Remove-Item -force
Merhaba
Öncelikle çalışma için teşekkürler ama örneğin LOG1 dosyasının içinde ki her şey silinsin ancak X isimli bir klasör var bunun silinmemesini istiyorum bunu kod ile sağlayabilir miyiz?
Bu scripti belli dosya formatındaki dosyaları sildirmek için nasıl düzenleyebiliriz? misal sadece pdf formatındaki dosyaları belli tarihten eski ise silinsin komutu nasıl yapılır üstad?
@Mustafa : Herhangi bir yere kaydolmazlar çalıştırdıktan sonra , bilgisayarda kalmaması için scripti silebilirsiniz.
@Burak : Ram daki bilgiler herhangi biryeye yazılmazlar sadece Ram dolduğunda Page File dosyasına yazılırlar
Web Link ...
Bilgisayar için yapılan bu scriptleri çalıştırdığımızda topluca bunları nerede görebiliriz.Her hangi bir yere kaydoluyormu.Çalıştırdığım scriptler bir yere kaydoluyorsa silmek için nereye bakmamız gerekiyor
merhaba, görev yöneticisi ram kısmındaki önbellek nereye yazılır? hdd kullanıyorum egerki oraya yazılıyorsa bunu kapatmak ıstıyorumda ondan soruyorum. tesekkurler
Rica ederim, Selamlar.
Teşekkürler, güzel konu