#scriptin çalışacağı klasör.
$TargetFolder = "<Dizin>"
#seçeceği dosya türü
$filetype= "*.jpg"
#dosya adında IMG geçiyorsa bu dosyayı silmemesi için birinci değişken. Eğer silmesini istiyorsanız aşağıdaki if döngüsünün içerisinde geçen notmatch parametresini match olarak değiştirmeniz gerekir.
$namefilter_1="IMG"
#dosya adında DSC geçiyorsa bu dosyayı silmemesi için ikinci değişken değişken. Eğer silmesini istiyorsanız aşağıdaki if döngüsünün içerisinde geçen notmatch parametresini match olarak değiştirmeniz gerekir.
$namefilter_2="DSC"
#60 günden önce işlem görmüş (modified) olmuş dosyalar
$file_age = "60"
foreach ($i in Get-ChildItem $TargetFolder -recurse -include $filetype)
{
if (($i.Lastwritetime -lt($(Get-Date).AddDays(-$file_age)))) -and ($i.name -notmatch $namefilter_1) -and ($i.name -notmatch $namefilter_2))
{
#Silmeden önce kontrol için hangi dosyaların silineceğini txt dosyasına yazar. kontrolden sonra alttaki satırı başındaki’#’ işaretini kadırıp bu satırı da başına ‘#’ işareti koyarak disable edetmeniz gerekmektedir.
echo $i.Name $i.LastWriteTime >>"c:\delete.txt"
# -whatif parametetresi işlem yapılmadan silinecek dosyaların listesini göstermeyi sağlar. silme işlemi yapmaz. Dosyaların silinmesi için ‘whatif’ paremetresini de kaldırmanız gerekir.
#Remove-Item $i -force -whatif
}
}
Günün sonunda Scriptimiz;
$TargetFolder = "<Dizin>"
$filetype= "*.jpg"
$namefilter_1="IMG"
$namefilter_2="DSC"
$file_age = "60"
foreach ($i in Get-ChildItem $TargetFolder -recurse -include $filetype)
{
if (($i.Lastwritetime -lt($(Get-Date).AddDays(-$file_age)))) -and ($i.name -notmatch $namefilter_1) -and ($i.name -notmatch $namefilter_2))
{
echo $i.Name $i.LastWriteTime >>"c:\delete.txt"
Remove-Item $i -force -whatif
}
}