Thread Die "Größe auf Datenträger" einer Datei auf Windows ermitteln (13 answers)
Opened by bianca at 2016-08-15 07:50

GwenDragon
 2016-08-15 12:05
#185249 #185249
User since
2005-01-17
14544 Artikel
Admin1
[Homepage]
user image
Möglichkeit:
1. Über CPAN:Win32::DriveInfo die Blockgröße des Laufwerks holen
2. Dann mit CORE::stat() die Dateigröße in Bytes der Datei.
3. Dann die Dateigröße auf die Blockgröße aufrunden.

Ungetestetes Beispiel:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use Win32::DriveInfo;

my $file = 'C:\test\file.txt';

sub fileSizeBlocks {
    my $file = shift;

    my ($drive) = $file =~ /^([A-Z])/;
    my ( $SectorsPerCluster, $BytesPerSector )
      = ( Win32::DriveInfo::DriveSpace($drive) )[ 0, 1 ];
    my $blockSizeBytes = $SectorsPerCluster * $BytesPerSector;

    my $fileSizeBytes = ( stat($file) )[7];
    
    my $blocks = int( $fileSizeBytes / $blockSizeBytes );
    $blocks++ if ( $fileSizeBytes % $blockSizeBytes );
        
    return $blockSizeBytes * $blocks;
}

say "Datei '$file' ist ", fileSizeBlocks($file), " groß";
die Drachin, Gwendolyn


Unterschiedliche Perl-Versionen auf Windows (fast wie perlbrew) • Meine Perl-Artikel

View full thread Die "Größe auf Datenträger" einer Datei auf Windows ermitteln