Beitragsseiten

1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

Ermitteln der Standard-Informationen mit dem FileSystemObject

Oft  ist es erforderlich, zu Ordnern und Dateien die Eigenschaften auszuwerten.

In VBA bietet sich dazu das File System Object an, mit dem auf die wesentlichen Ordner- und Dateieigenschaften zugegriffen werden kann. Hier ein Auszug aus Microsoft Windows 2000 - Scripting-Handbuch (Teil 1) Scripting-Konzepte und -Technologien zur Systemadministration - Kapitel 4 - Die Script-Laufzeitbibliothek:

Tabelle 4.3: Eigenschaften des Objekts Folder

Eigenschaft

Beschreibung

Attributes

Ein Bitfeld mit den Attributen des Ordners. Weitere Informationen finden Sie im Abschnitt Verwalten von Ordnerattributen in diesem Kapitel.

DateCreated

Erstellungsdatum des Ordners.

DateLastAccessed

Letztes Zugriffsdatum.

DateLastModified

Letztes Bearbeitungsdatum.

Drive

Laufwerksbuchstabe mit Doppelpunkt (zum Beispiel C:) des Laufwerks, in dem der Ordner gespeichert ist.

Files

Eine Collection mit Objekten vom Typ File zum Zugriff auf die im Ordner gespeicherten Dateien.

IsRootFolder

Ein Boolean-Wert, der anzeigt, ob es sich um einen Stammordner (wie zum Beispiel C:\) handelt.

Name

Name des Ordners ohne Pfadangaben (zum Beispiel System32).

ParentFolder

Name des Ordners, in dem der Ordner gespeichert ist. Für den Ordner C:\Scripts wäre dies zum Beispiel C:\.

Path

Vollständiger Pfad des Ordners (zum Beispiel C:\Windows\System32).

ShortName

Ordnername in der MS-DOS-Syntax mit der 8.3-Namenskonvention. Der Ordner C:\Windows\Programme wird zum Beispiel als Progra~1 angezeigt

ShortPath

Pfadname des Ordners in der MS-DOS-Syntax. Der Ordner C:\Windows\Programme wird zum Beispiel als C:\Windows\Progra~1 angezeigt.

Size

Gesamtgröße in Byte aller Inhalte des Ordners. Dies schließt die in dem Ordner gespeicherten Dateien und alle Dateien in Unterordnern ein.

SubFolders

Eine Collection mit den Unterordnern des Ordners. Die Unterordner in den Unterordnern sind nicht in dieser Collection enthalten.

Type

Ein String mit einer Beschreibung des Ordnertyps - meist File Folder.

 

Tabelle 4.5: Eigenschaften des Objekts File

Eigenschaft

Beschreibung

Attributes

Ein Bitfeld mit den Attributen der Datei.

DateCreated

Das Erstellungsdatum der Datei.

DateLastAccessed

Das Datum des letzten Dateizugriffs.

DateLastModified

Das Datum der letzten Änderung an der Datei.

Drive

Laufwerksbuchstabe mit Doppelpunkt des Laufwerks, auf dem die Datei gespeichert ist.

Name

Dateiname ohne Pfadinformationen. Für die Datei C:\Windows\System32\Scrrun.dll wäre das zum Beispiel Scrrun.dll.

ParentFolder

Name des Ordners, in dem die Datei gespeichert ist. Für C:\Windows\System32\Scrrun.dll wäre das zum Beispiel System32.

Path

Der vollständige Pfad der Datei (zum Beispiel C:\Windows\System32\Scrrun.dll).

ShortName

Der MS-DOS-Name der Datei (in 8.3-Schreibweise). Für die Datei C:\MySpreadsheet.xls ist das zum Beispiel MySpre~1.xls.

ShortPath

Der Pfad in MS-DOS-Schreibweise (in 8.3-Schreibweise). Für die Datei C:\Windows\Program Files\MyScript.vbs wäre das zum Beispiel C:\Windows\Progra~1\MyScript.vbs.

Size

Gesamtgröße der Datei in Byte.

Type

Ein String mit der Dateiart (zum Beispiel Microsoft Word Document).

 

Um also die Eigenschaften eines Ordners abzufragen, muss zunächst eine Instanz des FileSystemObject erstellt werden, mit der dann mit der GetFolder-Methode eine Referenz auf den gewünschten Ordner erzeugt werden kann. Über das resultierende Folder-Objekt können dann die Eigenschaften abgerufen werden.

Option Explicit

Sub OrdnerEigenschaften()
    Dim fso As Object
    Dim folder As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("F:\Program Files (x86)")
    
    Debug.Print "Attribute: " & folder.Attributes
    Debug.Print "erstellt am: " & folder.DateCreated
    Debug.Print "letzter Zugriff: " & folder.DateLastAccessed
    Debug.Print "letzte Bearbeitung: " & folder.DateLastModified
    Debug.Print "Laufwerk: " & folder.Drive
    Debug.Print "Anzahl Dateien: " & folder.Files.Count
    Debug.Print "Stammorder?: " & folder.IsRootFolder
    Debug.Print "Name ohne Pfad: " & folder.Name
    Debug.Print "Übergeordneter Ordner: " & folder.ParentFolder
    Debug.Print "Vollständiger Pfad: " & folder.Path
    Debug.Print "MS-DOS-Ordnername: " & folder.ShortName
    Debug.Print "MS-DOS-Pfad: " & folder.ShortPath
    Debug.Print "Gesamtgröße: " & folder.Size
    Debug.Print "Anzahl Unterordner: " & folder.SubFolders.Count
    Debug.Print "Ordnertyp: " & folder.Type
End Sub

 

Ähnlich sieht der Abruf der Dateieigenschaften aus. Hier wird mit der GetFile-Methode eine Referenz auf die gewünschte Datei erzeugt. Über das resultierende File-Objekt können dann die Dateieigenschaften abgerufen werden, die bis auf die Ordner-spezifischen Eigenschaften Files, IsRootFolder und SubFolders identisch sind.

Option Explicit

Sub DateiEigenschaften()
    Dim fso As Object
    Dim file As Object
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set file = fso.GetFile("F:\Windows\WindowsUpdate.log")
    
    Debug.Print "Attribute: " & file.Attributes
    Debug.Print "erstellt am: " & file.DateCreated
    Debug.Print "letzter Zugriff: " & file.DateLastAccessed
    Debug.Print "letzte Bearbeitung: " & file.DateLastModified
    Debug.Print "Laufwerk: " & file.Drive
    Debug.Print "Name ohne Pfad: " & file.Name
    Debug.Print "Übergeordneter Ordner: " & file.ParentFolder
    Debug.Print "Vollständiger Pfad: " & file.Path
    Debug.Print "MS-DOS-Ordnername: " & file.ShortName
    Debug.Print "MS-DOS-Pfad: " & file.ShortPath
    Debug.Print "Gesamtgröße: " & file.Size
    Debug.Print "Dateityp: " & file.Type
End Sub

 

Kommentare   

Gast
0 # Gast 2016-11-23 18:03
Halllo,
bei mir funktioniert die Windows Shell wunderbar, aber NICHT für versteckte Dateien. Weiß jemand Rat?
Gruß und Dank vorab,
Antworten | Dem Administrator melden
thomey
0 # thomey 2016-12-13 11:55
Hallo Gast,

eigentlich sollte das funktionieren. Hab es grad mit C:\$WINRE_BACKUP_PARTITION.MARKER (versteckt) und C:\OneDriveTemp (versteckt und schreibgeschützt) und dem Index 3 (Änderungsdatum) probiert und für beide wurden die Infos ausgegeben. Hattest Du eine Fehlermeldung?

Gruß
Thomas
Antworten | Dem Administrator melden

Hätten Sie's gewusst?

Angemeldete User können Kommentare verfolgen und bei Antworten auf Kommentare per Email benachrichtigt werden.

Wussten Sie's schon?

Für Kommentare und Fehlerhinweise bin ich Ihnen immer dankbar. Benutzen Sie hierfür bitte das Kontaktformular oder die Kommentar-Funktion des jeweiligen Beitrags - eine Anmeldung ist hierfür nicht erforderlich. Wollen Sie jedoch über Reaktionen zu Kommentaren per Email informiert werden, dann melden Sie sich bitte an.