Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Verzeichnisse älter als 5 Tage komplett mit Unterverzeichnissen mit PERL Skript löschen

Mitglied: xplayer2005

xplayer2005 (Level 1) - Jetzt verbinden

07.11.2006, aktualisiert 09.11.2006, 8853 Aufrufe, 2 Kommentare

Hallo,

ich bin gerade dabei mir ein Perl Skript zu schreiben mit dem ich ganze Verzeichnisse inc. Inhalt mit einem bestimmten alter löschen kann.

Aan dieser stelle möche ich darauf hinweisen das ich ein Perlneuling bin, hab mir zwar ein 160 Seiten ebook durchgelesen und verstanden, finde aber auf viele Fragen keine Antworten auch nicht bei meinem Freund dem Google...

Ich würde mich sehr freuen wenn sich jemand findet der mir ein bisschen unter die Arme greift

Im Moment hänge ich gerade an dem Probmel mir den Verzeichnissnamen geben zu lassen..

volgendes Scenario:

ich habe einen Test Ordner c:\zul -- in diesem befinden sich 3 weitere Ordner mit jeweils 3 Dateien (XP SYSTEM)

nach ausführung des Skriptes sollen alle 3 Unterordner sowie alle 9 Dateien gelöscht sein


mit:

my @alter = (glob "C:/zul/folder1/*.*");

for (my $i=0; $i < @alter ; $i++){

print "$alter[$i]\n";

};

bekomme ich die Dateinamen - aber wie die Verzeichnissnamen?

bedanke mich im vorraus - sicherlich bin ich auch an Vorschlägen zu einer Komplettlösung interessiert.

Bitte keine Hinweise wie: nehm doch delage32.exe oder machs lieber mir ner anderen Sprache..
Mitglied: xplayer2005
07.11.2006 um 10:57 Uhr
ok verzeichnisse empfangen ist ganz einfach

my @alter = (glob "C:/zul/*");

for (my $i=0; $i < @alter ; $i++){

print "$alter[$i]\n";

};

einfach das "*.* in nur "*" gewandelt.. dann werden alle verzeichnisse anezeigt.


aber wie mache ich jetz weiter?
Bitte warten ..
Mitglied: 6890
09.11.2006 um 20:35 Uhr
abend,

hab mal ein script geschrieben welches ordner für ordner durchgeht und alte dateien und ordner löscht, kommentiert ist es auch:
01.
#!c:/perl/bin/perl
02.

03.
# das sind module für strictes programmieren und warnungen
04.
use strict;
05.
use warnings;
06.

07.
# ein paar konstanten
08.
use constant LOESCHEN => 0;
09.
use constant BEHALTEN => 1;
10.
use constant DELETED => -1;
11.

12.
# dein ordner wo drinne gelöscht werden soll
13.
my $dir = "D:/SCRIPTE/ADMINISTRATOR/test1";
14.

15.
# das log file
16.
my $logFile = "$dir/log.txt";
17.
my @allFiles;
18.
my %allFiles;
19.
my $lastMod;
20.

21.
# zeitpunkt minus 5 tage also alt die dateien und ordner höchstens sein dürfen
22.
my $back5days = (time()-(86400*5));
23.

24.
# hier springt er in die sub cd
25.
&cd($dir);
26.

27.
# alle dateien durchgehen und schauen ob sie älter als 5 tage sind
28.
# ordner werden automatisch auf löschen gesetzt
29.
foreach(@allFiles) {
30.
    $lastMod = (stat($_))[9];
31.
    $allFiles{$_} = BEHALTEN if(($lastMod - $back5days) > 0 && -f $_);
32.
    $allFiles{$_} = LOESCHEN if(($lastMod - $back5days) < 0 && -f $_);
33.
    $allFiles{$_} = LOESCHEN if -d $_;
34.
}
35.

36.
# die dateien löschen die älter als 5 tage sind
37.
foreach(keys(%allFiles)) {
38.
    if ($allFiles{$_} == LOESCHEN && -f $_) {
39.
        $allFiles{$_} = DELETED if unlink($_);
40.
    }
41.
}
42.

43.
# die ordner löschen die leer sind
44.
# rmdir löscht nur leere ordner
45.
foreach(keys(%allFiles)) {
46.
    if ($allFiles{$_} == LOESCHEN && -d $_) {
47.
        $allFiles{$_} = DELETED if rmdir($_);
48.
    }
49.
}
50.

51.
# den ganzen spass in ne log datei schreiben
52.
&loggen();
53.

54.
# logdatei schreiben
55.
sub loggen {
56.
    open(LOGFILE,">$logFile") or die $!;
57.
    foreach(keys(%allFiles)) {
58.
        print LOGFILE $_," --> ";
59.
        print LOGFILE "File/Directory wurde geloescht...\n\n" if $allFiles{$_} == DELETED;
60.
        print LOGFILE "File/Directory ist aktuell...\n\n" if $allFiles{$_} == BEHALTEN;
61.
        print LOGFILE "File/Directory wurde nicht geloescht...\n\n" if $allFiles{$_} == LOESCHEN;
62.
    }
63.
    close(LOGFILE);
64.
}
65.

66.
# diese recursive funktion geht in jeden ordner liest den inhalt aus und
67.
# falls im inhalt ein ordner ist geht er auch in diesen und soweiter (recursiv halt)
68.
# alle pfade von dateien und ordnern werden in ein array geschrieben damit
69.
# man sie später löschen oder behalten kann
70.
sub cd {
71.
    my $dir = shift;
72.
    my $base = $dir."/";
73.
    my @currDir;
74.
    opendir(DIR,$dir) or die $!;
75.
    @currDir=readdir(DIR);
76.
    close(DIR);
77.
    foreach(@currDir) {
78.
        next if $_ eq '.' or $_ eq '..';
79.
        &cd($base.$_) if(-d $base.$_);
80.
        push(@allFiles,$base.$_);
81.
    }
82.
}
falls fragen sind bitte melden

mfg godlike P
Bitte warten ..
Ähnliche Inhalte
Windows 7
Strg + Alt + Entf komplett blockieren
gelöst Frage von KaladialWindows 710 Kommentare

Hallo, ich hab eine eigentlich relativ simple Frage, auf die Mr.Google aber leider keine zufriedenstellende Antwort hatte. Folgendes Problem: ...

Perl

Mehrere E-Mail Empfänger in Send-Mail Perl-Skript

Frage von JordanPerl2 Kommentare

Hallo zusammen, ich hatte vorher noch keinen Kontakt mit Perl-Skripten. Nun möchte ich ein bestehendes Perl-Skript für das Versenden ...

Perl

Perl Scripting routen

gelöst Frage von fredo788Perl13 Kommentare

Hallo, ich habe Probleme mit einem Perl Script. Anmerken muss ich, dass ich sehr unerfahren mit Perl bin. Auf ...

Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.CilinPerl8 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Neue Wissensbeiträge
Windows Server

Zähe Update-Installation auf Windows Server 2016

Information von kgborn vor 1 TagWindows Server4 Kommentare

Mir sind in der Vergangenheit immer wieder Beschwerden von Admins unter die Augen gekommen, die sich über die doch ...

Humor (lol)
Turnschuhe per Firmware lahmlegen
Information von Henere vor 1 TagHumor (lol)6 Kommentare

Und was kommt demnächst ? Bekomme ich kein Klopapier mehr, weil der Spender einem DDOS unterliegt ? :-) Ich ...

Sicherheit

Sicherheitsrisiko in WinRAR und Co. durch Schwachstelle in UNACEV2.DLL

Information von kgborn vor 1 TagSicherheit

In der seit 2005 nicht mehr aktualisierten Bibliothek UNACEV2.DLL gibt es eine Path-Traversal-Schwachstelle. Diese ermöglicht es, bei ACE-Archiven Dateien ...

Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 2 TagenInternet6 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Heiß diskutierte Inhalte
Hardware
Frage an Kenner von 5,25 Zoll Laufwerken
Frage von DerWoWussteHardware54 Kommentare

Moin Kollegen. Hier wird gerade im Archiv gewühlt und 5,25 Zoll Disketten ("2S/HD", 96TPI) sollen eingelesen werden. Ich habe ...

Windows Tools
Dateiname Automatisch auf PDF Klartext oder als Barcode abdrucken
Frage von spongebob24Windows Tools29 Kommentare

Hallo Zusammen, habe eine tolle Anforderung bekommen. Ich sollte auf mehrere PDF Dateien Automatisch einen Stempel anbringen lassen. Toll ...

Internet
SDSL oder ADSL - Preis-Leistungs-Verhältnis
Frage von ZeppelinInternet22 Kommentare

Wehrte Community, der Unterschied dieser beiden Techniken ist recht einfach erklärt. Das S, steht für Synchron (Gleich) und das ...

Microsoft Office
MicroSoft und seine Lizenzen
Frage von ZeppelinMicrosoft Office19 Kommentare

Wehrte Community, ich wende mich an die Community weil MicroSoft dazu keine Stellung nehmen möchte. Ich öffne mein Web-Browser ...