Also für alle die es interessiert hier meine Lösung. Wo ich schon dabei war, habe ich gleich noch eine paar kleine Details mit eingebaut. Vielleicht ist es ja was für die FAQs?
Ich rufe eine sub auf und übermittle den Pfad:
&GetFolderInfo($mypath);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
sub GetFolderInfo
{
my @dirs = @_;
my (@allfiles, @files, @folders) = ();
my ($currdir, $file, $size, $measurement, $numfolders) = "";
while (@dirs != 0)
{
$currdir = pop( @dirs );
opendir( ENTRIES, "$currdir/" );
@allfiles = readdir( ENTRIES );
closedir( ENTRIES );
foreach $file (@allfiles)
{
if (-d "$currdir/$file")
{
push( @folders, "$currdir/$file" ) if (($file ne ".") && ($file ne ".."));
push( @dirs, "$currdir/$file" ) if (($file ne ".") && ($file ne ".."));
}
else
{
push( @files, "$currdir/$file" );
my $currfile = "$currdir/$file";
my $currsize = -s $currfile;
$size = $size + $currsize;
}
}
}
my $numfiles = @files;
my $numfolders = @folders;
$size = sprintf("%.2f",$size / 1024);
$measurement = "KB";
if ($size > 1024) {$size = sprintf("%.2f",$size / 1024); $measurement = "MB";}
if ($size > 1024) {$size = sprintf("%.2f",$size / 1024); $measurement = "GB - WARNING! THE FOLDER IS WAY TO BIG!";}
$size =~ y/./,/;
return "$size $measurement<br>$numfiles files<br>in $numfolders (sub)-folder(s)";
}
Das Ergebniss sieht dann z.B. so aus:
368,30 KB
35 files
in 4 (sub)-folder(s)\n\n
<!--EDIT|cbxk1xg|1103611619-->