#!c:/perl/bin/perl -w use strict; use warnings; use File::Copy; use File::Spec; use File::Find; use File::stat; # dein ordner wo drinne geloescht werden soll my $srcDir ='C:/Users/cthdev34/Desktop/map'; my $destDir = 'C:/Users/cthdev34/Desktop/map/bakup'; my $oldInDays=30; my @sortFiles; #Elemente älter als 30 Tage my @dirs; #alle Ordner my @fils; #alle Dateien my $st; my $logFile = "$srcDir/Liste.txt"; my $inum_Tage = 30; #&cd($dir); find(\&sort,$srcDir); foreach(@dirs){print "Ordner:",$_,"\n";} foreach(@fils){print "Datei:",$_,"\n";} foreach(@sortFiles){print "Sortiert:", $_,"\n";} #ALLE ORDNER #****************************************************************************** sub sort { my $file = $File::Find::name; push(@dirs,$file) if (-d $file); push(@fils, $file) if (-f $file); push(@sortFiles,$file) if ( -M $file > $inum_Tage); } #ich glaube es liegt an dieser Zeile...... ich habe versucht es so zu machen.....ist leider falsch, wenn ich es komplett raushole, passiert gar nichts... #@sortFiles = find(\&sort(File::Spec->rel2abs($srcDir)); # die dateien loeschen die aelter als 30 tage sind for (sort(@sortFiles)) { # für die Quelle aus dem relaiven einen absoluten Pfad machen my $srcName=File::Spec->rel2abs($_, $srcDir); # ist es eine Datei und soll gelöscht werden? if ( -f $srcName) { # für das Ziel aus dem relaiven einen absoluten Pfad machen my $destName=File::Spec->rel2abs($_, $destDir); # nötige Verzeichnisse am Ziel erstellen wenn es nötig ist. my ($volume,$directories,$file) = File::Spec->splitpath( $destName ); make_dirs(File::Spec->catpath($volume, $directories)); # Datei verschieben move($srcName,$destName); } } # die ordner loeschen die leer sind # rmdir loescht nur leere ordner foreach( sort(@sortFiles)) { if ( -d $_) { my $DirName=File::Spec->rel2abs($_, $srcDir); rmdir($DirName); } } # Erzeugen von Verzeichnissen wenn sie nicht existieren sub make_dirs { my $path=shift; my $dnow=''; ($dnow,$path)=File::Spec->splitpath($path, 1); for(File::Spec->splitdir($path)) { $dnow=File::Spec->join($dnow, $_); unless(-d $dnow) { mkdir($dnow) or die("ERROR mkdir: $dnow ($!)"); } } }