Thread Win32::File Erweiterte Dateieigenschaft Inhalt komprimieren setzen (11 answers)
Opened by bianca at 2022-01-18 10:01

bianca
 2022-01-19 10:42
#194176 #194176
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
Wer Lust hat ein bisschen zu spielen.

Code (perl): (dl )
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
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

system 'cls';

require Win32::OLE;

my $ordner = 'D:/Arbeit/Unterverz';

# Quelle: https://docs.microsoft.com/de-de/windows/win32/cimwin32prov/compress-method-in-class-cim-directory
my %fehlernr = (
    2   => 'Der Zugriff wurde verweigert',
    8   => 'Nicht angegebener Fehler',
    9   => 'Ungültiges Objekt',
    10  => 'Das Objekt ist bereits vorhanden',
    11  => 'Dateisystem, nicht NTFS',
    12  => 'Plattform nicht Windows',
    13  => 'Laufwerk nicht identisch',
    14  => 'Verzeichnis ist nicht leer',
    15  => 'Freigabeverletzung',
    16  => 'Ungültige Startdatei',
    17  => 'Die Berechtigung wurde nicht gehalten',
    21  => 'Ungültiger Parameter',
);

if (my $obj_wmi = Win32::OLE->GetObject('winmgmts:\\\\.\\root\\cimv2')) {
    # Quelle: https://www.stephenjc.com/2009/12/09/windows-log-file-compression-in-perl
    if (my $obj_dir = $obj_wmi->Get("Cim_Directory='$ordner'")) {
        if ($obj_dir->Compressed != 1) {
            say "vorher : NICHT komprimiert";
            my $int_rc = $obj_dir->Compress;    # dieses Kommando liefert kein true oder false
            if ($int_rc != 0) {
                say "Fehler: '$int_rc / "
                    .(defined $fehlernr{$int_rc} ? $fehlernr{$int_rc} : 'Unbekannte Ursache')
                    ."'";
            }
            else {
                if (my $obj_dir_after = $obj_wmi->Get("Cim_Directory='$ordner'")) {
                    if ($obj_dir_after->Compressed == 1) {
                        say "Ordner ist jetzt komprimiert";
                    }
                    else { say "Ordner komprimieren hat nicht funktioniert"; }
                }
                else { say "Shit in ".__LINE__; }
            }
        }
        else { say "Ordner ist bereits komprimiert"; }
    }
    else { say "Shit in ".__LINE__; }
}
else { say "Shit in ".__LINE__; }


Danke GwenDragon und alle Leser!
10 print "Hallo"
20 goto 10

View full thread Win32::File Erweiterte Dateieigenschaft Inhalt komprimieren setzen