Rubrik: Dateisystem · Ordner & Verzeichnisse | VB-Versionen: VB6 | 28.12.15 |
Ordner-Inhalte im Dateisystem komprimieren (WMI) Eine Funktion, mit der sich der Inhalt eines Ordners im Dateisystem (de-)komprimierem lässt, um Speicherplatz auf dem Datenträger zu sparen. | ||
Autor: Dieter Otter | Bewertung: | Views: 5.821 |
www.tools4vb.de | System: Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wird der Festplattenspeicher knapp, bietet das System seit Windows Vista eine Möglichkeit, den Inhalt eines Ordners zu komprimieren. Die Ordner-Komprimierung kann hierbei über die "erweiterten Ordner-Attribute" aus dem Eigenschaften-Dialog (Rechtsklick auf Ordner) heraus aufgerufen werden.
Komprimierte Ordner bzw. Ordner-Inhalte werden dann im Windows Explorer blau dargestellt.
Und genau diese Funktionalität kann man auch aus dem eigenen Programm heraus steuern - per WMI.
' Komprimiert / De-Komprimiert einen Datei-Ordner im Dateisystem Public Function CompressFolder(ByVal sFolder As String, _ Optional ByVal UnCompress As Boolean = False) As Boolean Dim oWMI As Object Dim oFolders As Object Dim oFolder As Object Dim sSQL As String Dim bResult As Boolean Dim nResult As Long ' Fehlerbehandlung On Error GoTo SubExit ' WMI-Objekt erstellen Set oWMI = GetObject("winmgmts:\\.\root\cimv2") ' Verzeichnis selektieren sSQL = "SELECT * FROM Win32_Directory WHERE Name='" & Replace(sFolder, "\", "\\") & "'" ' Order-Objekt erstellen Set oFolders = oWMI.ExecQuery(sSQL) For Each oFolder In oFolders ' Ordner und darin enthaltene Dateien (de-)komprimieren If UnCompress Then nResult = oFolder.UnCompress Else nResult = oFolder.Compress End If Debug.print oFolder.Name, nResult bResult = (nResult = 0) Next On Error GoTo 0 SubExit: ' Objekte freigeben Set oFolders = Nothing Set oWMI = Nothing CompressFolder = bResult End Function
Aufrufbeispiel:
' alle Dateien im Ordner D:\Temp\MyDoc komprimieren Dim bResult As Boolean bResult = CompressFolder("D:\Temp\MyDoc")
' alle Dateien im Ordner D:\Temp\MyDoc de-komprimieren Dim bResult As Boolean bResult = CompressFolder("D:\Temp\MyDoc", True)