Script PowerShell pour modifier les attributs de fichiers (lecture seule, caché)

Script PowerShell pour modifier les attributs fichiers lecture seule et caché avec contrôle d existence et gestion d erreurs sous Windows.

Brève Introduction

Script PowerShell pour modifier les attributs de fichiers (lecture seule, caché) (powershell)
DESCRIPTION :
Ce script PowerShell permet de modifier les attributs d'un ou plusieurs fichiers spécifiés par l'utilisateur, en définissant ou en supprimant les attributs lecture seule et caché. Il est utile pour gérer rapidement les permissions d'affichage et de modification des fichiers dans un environnement Windows.

NOTES SUPPLÉMENTAIRES :
Le script utilise des paramètres pour choisir d'ajouter ou de supprimer les attributs lecture seule et caché. Si aucun attribut n'est spécifié, le script affiche un message d'aide. Il est robuste et gère plusieurs fichiers, avec contrôle d'existence et messages d'erreur.

EXPLICATIONS :
- Paramètres : permettent à l'utilisateur de spécifier quels attributs modifier et s'il faut les supprimer ou les ajouter.
- Contrôle d'existence des fichiers : évite les erreurs en tentant de modifier des fichiers inexistants.
- Utilisation de System.IO.FileAttributes : permet de lire et modifier efficacement les attributs.
- Journal de sortie : informe l'utilisateur des modifications effectuées ou des erreurs.

Code d'Exemple : powershell

<#
.SYNOPSIS
Script pour modifier les attributs de fichiers : lecture seule et caché.
.DESCRIPTION
Permet d'ajouter ou de supprimer les attributs ReadOnly et Hidden d'un ou plusieurs fichiers spécifiés.
.PARAMETER Path
Chemin du fichier ou tableau de fichiers à modifier.
.PARAMETER ReadOnly
Si spécifié, modifie l'attribut lecture seule.
.PARAMETER Hidden
Si spécifié, modifie l'attribut caché.
.PARAMETER Remove
Si spécifié, supprime les attributs indiqués au lieu de les ajouter.
.EXAMPLE
.
Set-FileAttributes.ps1 -Path "C:\test\file.txt" -ReadOnly
Définit l'attribut lecture seule sur le fichier spécifié.
.EXAMPLE
.
Set-FileAttributes.ps1 -Path "C:\test\*" -Hidden -Remove
Supprime l'attribut caché de tous les fichiers dans le dossier C:\test.
#>

param(
    [Parameter(Mandatory=$true, Position=0)]
    [string[]]$Path,

    [switch]$ReadOnly,
    [switch]$Hidden,
    [switch]$Remove
)

function Set-FileAttribute {
    param(
        [string]$FilePath,
        [switch]$ReadOnly,
        [switch]$Hidden,
        [switch]$Remove
    )

    # Vérifie que le fichier existe
    if (-not (Test-Path -LiteralPath $FilePath -PathType Leaf)) {
        Write-Warning "Le fichier '$FilePath' n'existe pas."
        return
    }

    # Obtient les attributs actuels
    $currentAttributes = [System.IO.File]::GetAttributes($FilePath)

    # Modifie les attributs selon les paramètres
    if ($ReadOnly) {
        if ($Remove) {
            # Supprime l'attribut ReadOnly
            $newAttributes = $currentAttributes -band (-bnot [System.IO.FileAttributes]::ReadOnly)
        } else {
            # Ajoute l'attribut ReadOnly
            $newAttributes = $currentAttributes -bor [System.IO.FileAttributes]::ReadOnly
        }
        $currentAttributes = $newAttributes
    }

    if ($Hidden) {
        if ($Remove) {
            # Supprime l'attribut Hidden
            $newAttributes = $currentAttributes -band (-bnot [System.IO.FileAttributes]::Hidden)
        } else {
            # Ajoute l'attribut Hidden
            $newAttributes = $currentAttributes -bor [System.IO.FileAttributes]::Hidden
        }
        $currentAttributes = $newAttributes
    }

    # Définit les nouveaux attributs
    try {
        [System.IO.File]::SetAttributes($FilePath, $currentAttributes)
        Write-Host "Attributs modifiés pour '$FilePath' : $currentAttributes"
    } catch {
        Write-Error "Erreur lors de la modification des attributs de '$FilePath' : $_"
    }
}

# Vérifie qu'au moins un attribut est spécifié
if (-not ($ReadOnly -or $Hidden)) {
    Write-Host "Erreur : spécifiez au moins un attribut à modifier avec -ReadOnly et/ou -Hidden."
    exit 1
}

# Applique la modification à tous les fichiers spécifiés
foreach ($file in $Path) {
    # Supporte les jokers en développant les fichiers
    $filesToProcess = Get-ChildItem -LiteralPath $file -File -ErrorAction SilentlyContinue
    if ($filesToProcess.Count -eq 0 -and (Test-Path -LiteralPath $file -PathType Leaf)) {
        # Si ce n'est pas un dossier ou un joker, c'est un fichier unique
        Set-FileAttribute -FilePath $file -ReadOnly:$ReadOnly -Hidden:$Hidden -Remove:$Remove
    } elseif ($filesToProcess.Count -gt 0) {
        foreach ($f in $filesToProcess) {
            Set-FileAttribute -FilePath $f.FullName -ReadOnly:$ReadOnly -Hidden:$Hidden -Remove:$Remove
        }
    } else {
        Write-Warning "Aucun fichier trouvé pour '$file'."
    }
}
×
×
×
Veux-tu régénérer la réponse ?
×
Exporter le chat
Choisissez le format d'export
⏳ Generazione PDF in corso…
Allegati
×
⚠️ Vous êtes sur le point de fermer le chat et de passer au générateur d’images. Si vous n’êtes pas connecté, vous perdrez notre conversation. Confirmez-vous ?
👁 Tu consultes une discussion partagée en mode temporaire. Elle ne sera pas enregistrée.
💬
×
Prompts enregistrés
×
Note privée
×
Étiquette
×
Rechercher dans toutes les discussions
×
Vos insights
Analyse en cours…
×
Préférences IA
Nom de l'assistant 30
Longueur des réponses
Modèle IA
Réponses structurées
Inclure des exemples
Utiliser des emojis
Guide-moi, ne résous pas Des indices et des questions plutôt que la réponse toute faite
Plus de réglages →
×
Partager cette discussion
Toute personne ouvrant ce lien pourra consulter la discussion ou l'ajouter à son profil comme discussion personnelle.
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
Discussion partagée
Quelqu'un a partagé une discussion avec toi. Veux-tu seulement la consulter ou l'ajouter à tes discussions ?
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
×

📌 Messages enregistrés

Chargement...

×

Historique des discussions

programmes-exemples · HISTORIQUE DU CHAT

Chargement...

Préférences IA

×
  • 🟢 BasiqueRéponses rapides et essentielles pour étudier
  • 🔵 MoyenQualité supérieure pour étude et programmation
  • 🟣 AvancéRaisonnement complexe et analyses détaillées
Expliquer les étapes

Qu'est-ce qu'il faut ?

PowerShell 5.1 ou supérieur (environnement d'exécution)

Fichiers d'entrée : chemin(s) du ou des fichiers à modifier (chaîne ou tableau de chaînes)

Paramètres d'entrée : -ReadOnly (interrupteur), -Hidden (interrupteur), -Remove (interrupteur)

LIENS/CONFIG : aucun, script autonome exécuté dans PowerShell

Fonctions internes : gestion des attributs de fichiers via .NET System.IO.FileAttributes

Sujets Similaires

Utilitaire PowerShell pour générer des mots de passe aléatoires simples
Script PowerShell simple pour générer des mots de passe aléatoires avec lettres et chiffres selon la longueur définie par l’utilisateur, sans caractères spéciau
Script PowerShell pour renommer des fichiers selon la date de création
Script PowerShell pour renommer automatiquement les fichiers selon leur date de création au format YYYYMMDD, avec gestion des conflits et prévention des doublon
Utilitaire PowerShell pour rechercher des fichiers par extension dans un dossier
Script PowerShell simple pour rechercher des fichiers par extension dans un dossier avec gestion d’erreurs et sortie facile à utiliser en pipeline ou fichier.
Script PowerShell pour lister les processus en cours et les enregistrer en CSV
Script PowerShell pour lister les processus actifs et enregistrer leurs détails essentiels dans un fichier CSV pour une analyse facile et rapide.
Script PowerShell pour compter le nombre de fichiers dans chaque sous-dossier
Script PowerShell simple pour compter le nombre de fichiers dans chaque sous-dossier d’un dossier spécifié avec gestion des erreurs et sortie lisible.
Utilitaire PowerShell pour remplacer une chaîne dans tous les fichiers texte d’un dossier
Script PowerShell simple pour remplacer une chaîne dans tous les fichiers texte d’un dossier, avec gestion des erreurs et sans dépendances externes.
Script PowerShell pour créer une structure de dossiers par défaut pour un projet
Script PowerShell pour créer automatiquement une structure de dossiers standardisée pour un projet logiciel sous Windows avec PowerShell 5.1 ou supérieur.
Script PowerShell pour surveiller l’espace libre sur un disque local
Script PowerShell pour surveiller l’espace libre sur un disque local avec seuil configurable et messages d’état clairs pour une gestion efficace du stockage.