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, 8826 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
Batch & Shell

Bei freigegebene Verzeichnisse in C:temp und Unterverzeichnisse Freigabe löschen

gelöst Frage von wk3963Batch & Shell3 Kommentare

Hallo, Aus Sicherheitsgründen soll ich bei WIN7 Rechnern alle Freigaben in C:\Temp und in Unterverzeichnissen schließen. Ich muss das ...

Batch & Shell

Alte Verzeichnisse löschen via Batch

gelöst Frage von synapsenstauBatch & Shell2 Kommentare

Ich habe einen TMP Ordner, in dem Ordner, die älter als 2 Wochen, gelöscht werden sollen. Die Batch soll ...

Batch & Shell

Alle Datein löschen die älter als x Tage sind

Frage von Roadrunner0815Batch & Shell3 Kommentare

Hallo an Alle! Ich brauche mal einen kleinen Denkanstoß zu folgender Problemstellung Ich möchte: - auf einem Laufwerk K: ...

Windows Server

Powershell-Skript löschen alter Dateien

gelöst Frage von Forseti2003Windows Server3 Kommentare

Hallo in die Runde, hab mal zu diesem Skript eine Frage: Das Skript läuft ohne Fehlermeldung durch, das Log ...

Neue Wissensbeiträge
Windows Netzwerk
Windows Admin Center - Sagt was ihr braucht!
Tipp von Juanito vor 21 StundenWindows Netzwerk12 Kommentare

Hallo zusammen, der ein- oder andere hat sicherlich schon vom Windows Admin Center gehört. - Microsoft's neue Adminkonsole welche ...

Verschlüsselung & Zertifikate

Bitlocker-Verschlüsselung und -Monitoring ohne MBAM

Tipp von DerWoWusste vor 1 TagVerschlüsselung & Zertifikate

Der Folgende Tipp beschreibt, wie man ohne MBAM die Verschlüsselung erzwingt und monitort. MBAM ist ein Enterprise-Benefit und somit ...

Netzwerkprotokolle
IPv6 Konfiguration von Site-Site-VPN ohne feste IP
Anleitung von lcer00 vor 2 TagenNetzwerkprotokolle1 Kommentar

Hallo zusammen, vor einiger Zeit hatte ich hier eine Frage zu dem Thema gepostet: Da war noch etwas offen. ...

Verschlüsselung & Zertifikate
Nutzung von Bitlocker in virtuellen Maschinen
Tipp von DerWoWusste vor 3 TagenVerschlüsselung & Zertifikate3 Kommentare

Vorbetrachtung: Wen sollte das interessieren? Wer virtuelle Maschinen zum Test auf seiner lokalen Festplatte speichert, wird diese nur selten ...

Heiß diskutierte Inhalte
Viren und Trojaner
Viren zu Testzwecken gesucht
Frage von ElHuttiViren und Trojaner20 Kommentare

Hallo, Ich suche zum rumtrollen auf einem alten PC Viren, die: - Keine Komponenten beschädigen - Keine Auswirkungen auf ...

Voice over IP
Andere Rufnummer bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom anzeigen
Frage von vafk18Voice over IP18 Kommentare

Ich möchte bei abgehenden Gesprächen vom All-IP-Anschluß der Telekom meine Handynummer hinterlegen, damit ich Rückrufe jederzeit empfangen kann. Derzeit ...

Monitoring
Empfehlung für Server-Monitoring gesucht
Frage von LordGurkeMonitoring16 Kommentare

Moin, wir sehen uns momentan ein wenig nach einer Alternative zu unserem jetzigen Server-Monitoring um. Getestet habe ich bisher ...

Microsoft Office
Lizenzierung
Frage von opc123Microsoft Office14 Kommentare

Hallo, eventuell ein oft bekanntes Thema. Office 365 ist mir zu teuer, da wir als Bildungsträger andere Konditionen beim ...