Functions > FileDirDisk >


FileGetAttrib

Obtient les attributs d'un fichier.

FileGetAttrib ( "filename" )

Paramètre

filename Nom complet du fichier (ou du répertoire) à traiter.

Valeur de retour

Succès: Retourne une chaîne de code représentant les attributs d'un fichier.
Échec: Retourne "" (chaîne vide) et @error = 1.

Remarque

La chaîne de code retournée peut contenir une combinaison de ces lettres "RASHNDOCTX":
    "R" = READONLY (Lecture seule)
    "A" = ARCHIVE (Archive)
    "S" = SYSTEME (Système)
    "H" = HIDDEN (Caché)
    "N" = NORMAL (Normal)
    "D" = DIRECTORY (Répertoire)
    "O" = OFFLINE (Hors ligne)
    "C" = COMPRESSED (compression NTFS, pas ZIP)
    "T" = TEMPORARY (Temporaire)
    "X" = EFS ENCRYPTION (Compression EFS)

En relation

FileExists, FileGetSize, FileGetTime, FileSetAttrib, FileSetTime

Exemples

Exemple 1

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

Example()

Func Example()
    ; Crée une constante locale pour stocker les attributs de fichier du script en cours.
    Local Const $sAttribute = FileGetAttrib(@ScriptFullPath)

    ; Affiche la chaîne retournée par FileGetAttrib.
    MsgBox($MB_SYSTEMMODAL, "", "La chaîne des attributs: " & @CRLF & $sAttribute)

    ; Affiche la chaîne retournée par AttributeToString
    MsgBox($MB_SYSTEMMODAL, "", "La chaîne des attributs avec des valeurs faciles à comprendre: " & @CRLF & _
            AttributeToString($sAttribute))
EndFunc   ;==>Example

Func AttributeToString($sAttribute)
    ; Crée un tableau 1D avec des lettres d'attribut de fichier en divisant la chaîne à la virgule (,).
    Local $aInput = StringSplit("R,A,S,H,N,D,O,C,T", ",")

    ; Crée un tableau 1D en utilisant les noms des attributs de fichier plus compréhensibles en divisant la chaîne à la virgule (,).
    Local $aOutput = StringSplit("Read-only /, Archive /, System /, Hidden /" & _
            ", Normal /, Directory /, Offline /, Compressed /, Temporary /", ",")

    ; Boucle dans le tableau des lettres d'attribut pour les remplacer par des valeurs plus  conviviales, par exemple A devient Archive ou S devient Système.
    For $i = 1 To $aInput[0]
        $sAttribute = StringReplace($sAttribute, $aInput[$i], $aOutput[$i], 0, $STR_CASESENSE)
    Next

    ; Supprime l'espace et la barre oblique de fin.
    $sAttribute = StringTrimRight($sAttribute, 2)

    ; Retourne une chaîne d'attribut.
    Return $sAttribute
EndFunc   ;==>AttributeToString


Exemple 2

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Assigne une variable avec le chemin du fichier pour vérifier si c'est un fichier ou non.
    Local $sFilePath = @ScriptFullPath

    If IsFile($sFilePath) Then
        MsgBox($MB_SYSTEMMODAL, "", "The filepath is a file.")
    Else
        MsgBox($MB_SYSTEMMODAL, "", "The filepath is not a file.")
    EndIf
EndFunc   ;==>Example

;Vérifiez si le chemin du fichier est un fichier. Ne pas vérifier si le fichier existe.
Func IsFile($sFilePath)
    Return StringInStr(FileGetAttrib($sFilePath), "D") = 0
EndFunc   ;==>IsFile


Exemple 3

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Assigne une variable avec le chemin du script pour vérifier si c'est un répertoire ou pas.
    Local $sFilePath = @ScriptDir

    If IsDir($sFilePath) Then
        MsgBox($MB_SYSTEMMODAL, "", "Le chemin est un répertoire.")
    Else
        MsgBox($MB_SYSTEMMODAL, "", "Le chemin n'est pas un répertoire.")
    EndIf
EndFunc   ;==>Example

; Vérifie si le chemin est un répertoire.
Func IsDir($sFilePath)
    Return (StringInStr(FileGetAttrib($sFilePath), "D") > 0)
EndFunc   ;==>IsDir