1 2 3 4 5
use Win32::File qw(COMPRESSED SetAttributes); if (SetAttributes('D:/Testverz',COMPRESSED())) { say "hat geklappt"; }
2022-01-18T09:38:31 GwenDragonJa geht für Dateien aber leider nicht für Ordner/Verzeichnisse.Ich mach nichts mehr in Windows, deswegen nr ein Hinweis.
Schau mal, mit Win32:OLE könnte es gehen:
https://www.stephenjc.com/2009/12/09/windows-log-f...
QuoteCan't call method "Compress" on an undefined value at test.pl line 14.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/perl use strict; use warnings; use 5.010; system 'cls'; use Win32::OLE; my $file = 'D:/Arbeit'; my $strComputer = '.'; my $objWMI = Win32::OLE->GetObject('winmgmts:\\\\' . $strComputer . '\\root\\cimv2'); my $objFile = $objWMI->Get('Cim_Datafile=\'' . $file . '\''); my $intRC = $objFile->Compress; if ($intRC != 0) { print 'There was an error compressing the file: ' . $intRC, "\n"; } else { print "File compression successful\n"; }
2022-01-19T10:59:00 GwenDragonSehr schadeIch erwähnte ja, dass ich Windows nicht mehr so drauf hab.
2022-01-19T10:59:00 GwenDragonHatte einfach mal ins Blaue Cim_Directory statt Cim_Datafile versucht und es klappte :)Aber es wäre auch sinnvoll, hier zu posten, wo du den anderen Wert gefunden hast
2022-01-18T09:46:53 GwenDragonIst wohl das falsche Subforum, um einen Verzeichnisdienst wie LDAP, Active Directory etc. oder eine Datenbank geht es ja nicht. Oder missverstehe ich da was?
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__; }