gelöst mit perl komplettes Verzeichniss löschen (auch wenn noch dateien drin sind) unter xp
xplayer2005 (Level 1) - Jetzt verbinden
07.11.2006, aktualisiert 14.11.2006, 10307 Aufrufe, 8 Kommentare
hallo,
gibt es einen perl Befehl um verzeichnisse komplett inc. untervereichnissen zu löschen.
nenn nein: wie kann ich das umsetzen?
bedanke mich im vorraus
gibt es einen perl Befehl um verzeichnisse komplett inc. untervereichnissen zu löschen.
nenn nein: wie kann ich das umsetzen?
bedanke mich im vorraus
8 Antworten
- LÖSUNG 6890 schreibt am 07.11.2006 um 19:25:08 Uhr
- LÖSUNG 6890 schreibt am 07.11.2006 um 19:35:14 Uhr
- LÖSUNG Biber schreibt am 07.11.2006 um 19:38:00 Uhr
- LÖSUNG 6890 schreibt am 07.11.2006 um 20:07:19 Uhr
- LÖSUNG xplayer2005 schreibt am 08.11.2006 um 09:57:12 Uhr
- LÖSUNG 6890 schreibt am 08.11.2006 um 15:27:38 Uhr
- LÖSUNG 6890 schreibt am 09.11.2006 um 20:56:11 Uhr
- LÖSUNG xplayer2005 schreibt am 14.11.2006 um 11:10:03 Uhr
- LÖSUNG 6890 schreibt am 09.11.2006 um 20:56:11 Uhr
- LÖSUNG 6890 schreibt am 08.11.2006 um 15:27:38 Uhr
- LÖSUNG xplayer2005 schreibt am 08.11.2006 um 09:57:12 Uhr
- LÖSUNG 6890 schreibt am 07.11.2006 um 20:07:19 Uhr
- LÖSUNG Biber schreibt am 07.11.2006 um 19:38:00 Uhr
LÖSUNG 07.11.2006 um 19:25 Uhr
ja hallo,
dafür gibt es das modul File::Remove, kannste dir ja mal anschauen:
http://search.cpan.org/~adamk/File-Remove-0.34/lib/File/Remove.pm
mfg godlike P
dafür gibt es das modul File::Remove, kannste dir ja mal anschauen:
http://search.cpan.org/~adamk/File-Remove-0.34/lib/File/Remove.pm
mfg godlike P
LÖSUNG 07.11.2006 um 19:35 Uhr
falls du dir keine module installieren kannst, so funktionierts auch :
mfg godlike P
01.
#!/usr/local/bin/perl
02.
03.
use strict;
04.
05.
my $dir="test";
06.
opendir(DIR,$dir)or die "$!";
07.
my @remove = readdir(DIR);
08.
close(DIR);
09.
foreach(@remove){
10.
unlink("$dir/$_");
11.
}
12.
rmdir($dir) or die $!;
LÖSUNG 07.11.2006 um 19:38 Uhr
LÖSUNG 07.11.2006 um 20:07 Uhr
@godlike
Das gefällt mir... nicht so langatmig
wie Batch...
5 Stars mit auf den Weg.
Gruß
Biber
Das gefällt mir... nicht so langatmig
wie Batch...
5 Stars mit auf den Weg.
Gruß
Biber
danke danke...
dafür kann ich leider gar kein batch
wir könn ja mal so wechselseitiges training machen batch <==> perl
mfg
LÖSUNG 08.11.2006 um 09:57 Uhr
ich bekomm da die meldung...
Permission denied at C:/Documents and Settings/d048045/My Documents/_eclipseWorkspace/test2/225.pl line 15.
line15: rmdir($delpath) or die $!;
sorry hab vergessen zu sagen: ich wil das skript auf xp unde server 2003 ausführen..
Permission denied at C:/Documents and Settings/d048045/My Documents/_eclipseWorkspace/test2/225.pl line 15.
line15: rmdir($delpath) or die $!;
sorry hab vergessen zu sagen: ich wil das skript auf xp unde server 2003 ausführen..
LÖSUNG 08.11.2006 um 15:27 Uhr
ich bekomm da die meldung...
Permission denied at C:/Documents and
Settings/d048045/My
Documents/_eclipseWorkspace/test2/225.pl line
15.
Permission denied at C:/Documents and
Settings/d048045/My
Documents/_eclipseWorkspace/test2/225.pl line
15.
als welcher benutzer führst du das script aus??
denn das heisst das dir das löschen mangels rechten verwehrt wurde!!
mfg godlike P
LÖSUNG 09.11.2006 um 20:56 Uhr
abend,
hab mal ein script geschrieben welches
ordner für ordner durchgeht und alte
dateien und ordner löscht, kommentiert
ist es auch:
falls fragen sind bitte melden
mfg godlike P
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
LÖSUNG 14.11.2006 um 11:10 Uhr
Danke bis hier her..
allerdings löcht es manchmal nicht alle Unterordner - ab und an bleiben welche stehn.. ich weis aber nicht wiso
hinweis falls jemand das script auch verwenden möchte:
Damit die Logfile funnktioniert muss hier ein > dazu - damit alles angehängt werde kannn
open(LOGFILE,">>$logFile") or die $!;
allerdings löcht es manchmal nicht alle Unterordner - ab und an bleiben welche stehn.. ich weis aber nicht wiso
hinweis falls jemand das script auch verwenden möchte:
Damit die Logfile funnktioniert muss hier ein > dazu - damit alles angehängt werde kannn
open(LOGFILE,">>$logFile") or die $!;
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte