Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Powershell : supprimer un fichier avec 10 exemples

PowerShell est un shell puissant disponible dans Windows 10 et Windows 11 ainsi que les anciennes versions de Windows.
Vous pouvez parfois avoir besoin de manipuler les fichiers et notamment supprimer un fichier.

Pour cela, le cmdlet Remove-Item est disponible dans PowerShell pour supprimer un ou plusieurs éléments.
Il permet de supprimer des fichiers, des dossiers, des clés de registre, des variables, des alias et des fonctions.

Ce tutoriel vous explique comment supprimer des fichiers en utilisant la commande Powershell “Remove-Item”.

Powershell : suppression de fichier

Comment supprimer un fichier en PowerShell

Supprimer un fichier

L’utilisation basique de la commande Remove-Item consiste à spécifier le nom du fichier du répertoire courant pour suppression.
Par exemple pour supprimer fichier.txt :

Remove-Item fichier.txt
Pense que vous pouvez utiliser la complétion de PowerShell à l’aide de la touche de tabulation pour compléter le nom du fichier. Cela est pratique pour les noms de fichiers longs ou complexes.

Lorsque la commande ne retourne rien, la suppression a fonctionné.
Sinon vous pouvez avoir une erreur impossible de trouver le chemin d’accès, suppression impossible, accès refusé, ….

Une autre façon est de spécifier le chemin complet du fichier pour pouvoir supprimer un fichier dans un autre emplacement que le répertoire courant.
Par exemple pour supprimer fichier.txt présent dans le bureau de Windows :

Remove-Item C:\user\mak\Destktop\fichier.txt
Supprimer un fichier en PowerShell

Supprimer plusieurs fichiers

Vous pouvez avoir besoin de supprimer plusieurs fichiers à la fois en PowerShell.
Cela est possible en spécifiant le nom des fichiers en les séparant par une virgule.

Remove-Item C:\dir1\fichier1, C:\dir1\fichier2, C:\dir2\fichier3
Supprimer plusieurs fichiers en PowerShell

Supprimer plusieurs fichiers avec le caractère joker

La commande Remove-item accepte également les caractères génériques, ce qui permet de supprimer des fichiers en masse.
Par exemple pour supprimer tous les fichiers avec l’extension txt :

Remove-Item *.txt
Supprimer plusieurs fichiers avec le caractère joker en Powershell

Exclure des fichiers lors de la suppression de fichiers

L’option -Exclude vous permet d’exclure des fichiers par leurs noms.
Il prend en charge les caractères joker.

Par exemple pour supprimer tous les fichiers avec l’extension du bureau mais en excluant ceux commençant par le mot fichier :

Remove-Item C:\Users\Mak\Desktop\*txt -Exclude "fichier*"

Supprimer les fichiers cachés, en lecture seule

Lorsque vous tentez de supprimer un fichier en lecture seule, vous pouvez rencontrer une erreur d’accès refusé :

Remove-Item : Impossible de supprimer l'élément C:\Users\Mak\Desktop\fichier.txt: Vous ne disposez pas des droits d’accès suffisants pour effectuer cette opération.

De même la suppression d’un fichier avec l’attribut caché peut ne pas fonctionner.

Pour résoudre cela, ajoutez l’option -Force comme ceci :

Remove-Item C:\Users\Mak\Desktop\*txt -Force
Supprimer les fichiers cachés, en lecture seule en PowerShell

Suppression des fichiers contenant des caractères spéciaux

Quelques exemples de suppression de fichiers comportant des caractères spéciaux dans le nom de fichiers.

Par exemple avec un espace et des parenthèses, il est fortement conseillé d’entourer le nom de fichier par un apostrophe.

Remove-Item 'C:\Users\Mak\Desktop\fichier (2).txt'

Pour les noms de fichiers avec des crochets, vous devez placer le caractère ` avant le [ ou ].

Remove-Item 'C:\Users\Mak\Desktop\Fichier `[2`].txt'
Suppression des fichiers contenant des caractères spéciaux en PowerShell

Une autre façon de procéder est de liter les noms de fichiers à l’aide du cmdlet Get-ChildItem et de filtrer grâce à Where-Object.
Par exemple pour lister les noms de fichiers comportant un [ :

Get-ChildItem | Where-Object Name -Like '*`[*'

Enfin, on traite chaque entrée grâce à ForEach-Object pour exécuter la commande Remove-Item dessus.

Get-ChildItem | Where-Object Name -Like '*`[*' | ForEach-Object { Remove-Item -LiteralPath $_.Name }
Suppression des fichiers contenant des caractères spéciaux en PowerShell

Supprimer flux de données alternatif (ADS)

Les flux de données alternatifs (ADS) sont une fonctionnalité du système de fichiers NTFS qui permet aux fichiers de contenir des métadonnées supplémentaires pour localiser les fichiers par auteur et par titre.

Vous pouvez supprimer un ADS grâce à l’option -Stream :

Remove-Item C:\Test\Copy-Script.ps1 -Stream Zone.Identifier

Supprimer un dossier et son contenu

La commande Remove-Item fonctionne également pour la suppression de répertoires. Voici un exemple de commande pour la même chose.

Remove-Item C:\dossier

Si le répertoire contient des fichiers, la commande de base demande une confirmation, vous devez appuyer sur ‘O’ pour procéder à la suppression, ‘N’ pour l’abandonner.

Pour éviter la confirmation, vous pouvez utiliser l’argument ‘-recurse’ avec la cmdlet ‘Remove-Item’. Exemple ci-dessous.

Remove-Item -recurse C:\dossier

Suppression récursive des fichiers dans les sous-dossiers

Il est possible de supprimer tous les fichiers dans une arboresce complète en PowerShell grâce à Get-ChildItem.

Voici un exemple

Get-ChildItem * -Include *.txt -Recurse | Remove-Item

Dans la commande Get-ChildItem, Path a la valeur (*), qui représente le contenu du dossier actuel. Elle utilise Include pour spécifier le type de fichier CSV et Recurse pour rendre la récupération récursive. Si vous essayez de spécifier le type de fichier dans le chemin d’accès, par exemple -Path *.csv, le cmdlet interprète l’objet de la recherche comme étant un fichier qui n’a pas d’éléments enfants, et Recurse échoue.

Suppression récursive des fichiers dans les sous-dossiers en PowerShell

Forcer la suppression d’un fichier

Il peut arriver qu’un fichier ne puisse être supprimé car verrouillé.
Ce script permet d’arrêter tous les processus qui ouvre un fichier par son nom pour ensuite tenter de supprimer le dit fichier.
Indiquer le nom du fichier dans la variable $lockedFile.

$allProcesses = Get-Process
$lockedFile = "fichier.txt"
foreach ($process in $allProcesses) { 
$process.Modules | where {$_.FileName -eq $lockedFile} | Stop-Process -Force -ErrorAction SilentlyContinue
    }
Remove-Item $lockedFile

L’article Powershell : supprimer un fichier avec 10 exemples est apparu en premier sur malekal.com.

Enregistrer un commentaire

0 Commentaires