Funktionreferenz


FileGetAttrib

Beschreibung anzeigen in

Gibt einen String zurück, der die Attribute einer Datei repräsentiert.

FileGetAttrib ( "filename" )

Parameter

filename Der Pfad zur zu untersuchenden Datei bzw. zum zu untersuchenden Verzeichnis

Rückgabewert

Erfolg: Ein String, der die Attribute einer Datei repräsentiert.
Fehler: Ein leerer String. Setzt @error auf 1.

Bemerkungen

Der zurückgegebene String kann eine Kombination der Buchstaben "RASHNDOCTXJ" sein:
    "R" = Schreibgeschützt (READONLY)
    "A" = Archiv (ARCHIVE)
    "S" = System (SYSTEM)
    "H" = Versteckt (HIDDEN)
    "N" = Normal (NORMAL)
    "D" = Verzeichnis (DIRECTORY)
    "O" = Offline (OFFLINE)
    "C" = Komprimiert (NTFS-, nicht ZIP-Kompression, COMPRESSED
    "T" = Temporär (TEMPORARY)
    "X" = EFS Verschlüsselung
    "J" = Verknüpfter Ordner (JOIN FOLDER) (erstellt mit FileCreateNTFSLink())

Verwandte Funktionen

FileExists, FileGetSize, FileGetTime, FileSetAttrib, FileSetTime, FileCreateNTFSLink

Beispiel

Beispiel 1

#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Example()

Func Example()
    ; Erstellt eine Konstante im lokalen Bereich um die Dateigenschaften des aktuellen Skripts zu speichern.
    Local Const $sAttribute = FileGetAttrib(@ScriptFullPath)

    ; Zeigt den String der durch FileGetAttrib zurückgegeben wurde.
    MsgBox($MB_SYSTEMMODAL, "", "Die Attribute des Strings: " & @CRLF & $sAttribute)

    ; Zeigt den String der durch AttributeToString zurückgegeben wurde.
    MsgBox($MB_SYSTEMMODAL, "", "Die Attribute des String mit leichter zu verstehenden Werten: " & @CRLF & _
            AttributeToString($sAttribute))
EndFunc   ;==>Example

Func AttributeToString($sAttribute)
    ; Erstellt ein 1D Array, das die Buchstaben der Dateiattribute enthält. Dabei wird der String beim Komma getrennt.
    Local $aInput = StringSplit("R,A,S,H,N,D,O,C,T,J", ",")

    ; Erstellt ein 1D Array, das die Dateiattributsbezeichnungen enthält. Dabei wird der String beim Komma getrennt.
    Local $aOutput = StringSplit("Read-only /, Archive /, System /, Hidden /" & _
            ", Normal /, Directory /, Offline /, Compressed /, Temporary /, JoinFolder /", ",")

    ; Ersetzt innerhalb der Schleife die Buchstaben der Dateiattribute durch die Dateiattributsbezeichnungen, z.B. A wird durch Archive oder S durch System ersetzt.
    For $i = 1 To $aInput[0]
        $sAttribute = StringReplace($sAttribute, $aInput[$i], $aOutput[$i], 0, $STR_CASESENSE)
    Next

    ; Entfernt das einfache Leerzeichen und den angehängten Slash.
    $sAttribute = StringTrimRight($sAttribute, 2)

    ; Gibt die konvertierten Dateiattributsbuchstaben aus.
    Return $sAttribute
EndFunc   ;==>AttributeToString

Beispiel 2

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Weist einer Variable den Dateipfad zu, um zu prüfen, ob dieser eine Datei ist.
    Local $sFilePath = @ScriptFullPath

    If IsFile($sFilePath) Then
        MsgBox($MB_SYSTEMMODAL, "", "Der Dateipfad ist eine Datei.")
    Else
        MsgBox($MB_SYSTEMMODAL, "", "Der Dateipfad ist keine Datei.")
    EndIf
EndFunc   ;==>Example

; Prüft, ob der Dateipfad eine Datei ist. Prüft nicht, ob die Datei existiert.
Func IsFile($sFilePath)
    Return StringInStr(FileGetAttrib($sFilePath), "D") = 0
EndFunc   ;==>IsFile

Beispiel 3

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Weist einer Variable den Dateipfad zu, um zu prüfen, ob dieser ein Ordner ist.
    Local $sFilePath = @ScriptDir

    If IsDir($sFilePath) Then
        MsgBox($MB_SYSTEMMODAL, "", "Der Dateipfad ist ein Ordner.")
    Else
        MsgBox($MB_SYSTEMMODAL, "", "Der Dateipfad ist kein Ordner.")
    EndIf
EndFunc   ;==>Example

; Prüft, ob der Dateipfad ein Ordner ist. Prüft nicht, ob der Ordner existiert.
Func IsDir($sFilePath)
    Return StringInStr(FileGetAttrib($sFilePath), "D") > 0
EndFunc   ;==>IsDir

Beispiel 4

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Create a temporary dir
    Local $sDirPath = @TempDir & "\TempDir"
    DirRemove($sDirPath)
    DirCreate($sDirPath)

    ; Create a NTFS link to the document dir
    Local $sNTFSLink = $sDirPath & "\ExampleNTFSLinkToFolder"
    Local $iNTFSLink = FileCreateNTFSLink(@MyDocumentsDir, $sNTFSLink)

    ; Display an explorer of whether the NTFS link was created.
    Local $hWin = 0
    If $iNTFSLink Then
        ShellExecute($sDirPath)
        $hWin = WinWaitActive("[CLASS:CabinetWClass]", "") ; Wait explorer window active
    Else
        MsgBox($MB_SYSTEMMODAL, "", "The NTFS link wasn't created." & @CRLF & "FileCreateNTFSLink returned: " & $iNTFSLink)
    EndIf

    If IsNTFSLink($sNTFSLink) Then
        MsgBox($MB_SYSTEMMODAL, "", "The dirpath is a NTFSLink to a folder." & @CRLF & @CRLF & _
                "You can click on it.")
    Else
        MsgBox($MB_SYSTEMMODAL, "", "The dirpath is not a NTFSLink to a folder.")
    EndIf

    ; Delete the temporary dirs.
    DirRemove($sNTFSLink)
    DirRemove($sDirPath)

    ; close explorer windows
    If $hWin Then WinKill($hWin, "")

EndFunc   ;==>Example

; Check if the dirpath is a NTFSLink to a folder..
Func IsNTFSLink($sDirPath)
    Return StringInStr(FileGetAttrib($sDirPath), "J") > 0
EndFunc   ;==>IsNTFSLink