Ce tutoriel pour copier des fichiers récursivement en PowerShell avec Copy-Item. En effet, elle permet de copier un grand nombre de fichiers et de dossiers en une seule commande. Windows PowerShell est un shell qui permet aux utilisateurs d’exécuter des commandes écrites dans le langage de Scripting Microsoft PowerShell.
L’utilisateur peut exécuter des scripts PS sur Windows, qui sont similaires aux fichiers batch des anciennes versions de Windows, c’est à dire les commandes MS-DOS. A noter que les commandes DOS et le PowerShell sont toutes les deux disponibles sur Windows 10 et Windows 11 par exemple.
Table of Contents
1. Les scripts PowerShell et la commande Copy-Item
Tout d’abord, Windows PowerShell est un shell de ligne de commande basé sur des tâches et un langage de script qui s’appuie sur le cadre .NET. Windows PowerShell comprend une cmdlet (outil de ligne de commande) permettant de copier des fichiers. Les cmdlets sont comme de petites commandes qui peuvent être combinées pour effectuer des tâches telles que la copie de fichiers.
Le langage de script vous aidera à réduire le temps nécessaire à la copie de fichiers, à automatiser des tâches, à gérer les configurations du système, etc. La cmdlet Copy-Item peut être utilisée pour copier un ou plusieurs éléments d’un emplacement à un autre, par exemple d’un dossier du système de fichiers à un lecteur de CD, ou d’un dossier d’une arborescence du système de fichiers à un autre dossier de la même arborescence.
2. Copie récursive de fichiers et de dossiers en PowerShell
Pour commencer, voici un cas pratique et simple, un dossier C:\WORK\Folder source avec deux sous dossiers:
- Folder contient
- file (1).txt
- file (2).txt
- file (3).txt
- Le dossier SubFolder_1, lui contient
- file (4).txt
- file (5).txt
- file (6).txt
Le but est de copier tous les fichiers et l’arborescence dans le dossier cible: C:\WORK\Target
Get-ChildItem C:\WORK\Folder -Recurse
Copier tous les fichiers des dossiers et sous dossiers avec la commande Copy-Item et l’option -Recurse.
Copy-Item -Path C:\WORK\Folder\ -Destination C:\WORK\Target -Recurse
Vérifier que les fichiers sont bien copiés dans le dossier cible. Le script copie bien tous les fichiers et les dossiers depuis le dossier WORK, y compris le dossier Folder.
Get-ChildItem C:\WORK\Target -Recurse
3. Copier les fichiers en récursif et forcer l’écrasement
Pour forcer la copie si un ou plusieurs dossiers ou fichiers existent déjà dans le dossier cible, utiliser l’option -Force.
Copy-Item -Path C:\WORK\Folder\ -Destination C:\WORK\Target -Recurse -Force
4. Sélectionner des extensions de types de fichiers spécifiques
Le script propose également une option permettant de copier uniquement des types de fichiers spécifiques, tels que *.docx ou *.jpg, ou un fichier spécifique portant un nom donné. Par exemple, pour forcer la copie des fichiers TXT uniquement et ignorer toutes les autres extensions, utiliser ce script:
Copy-Item -Path C:\WORK\Folder\ -Destination C:\WORK\Target -Recurse -Force -Filter "*.txt"
5. Exclure des fichiers de la copie avec PowerShell
Enfin, le script offre une option permettant d’exclure certains répertoires de la copie. Pour exclure des extensions de fichiers particulières, utiliser l’option PS -Exclude. Dans cet exemple, la copie est récursive et copie tous les fichiers sauf les fichiers Word avec une extension Docx.
Copy-Item -Path C:\WORK\Folder\ -Destination C:\WORK\Target -Recurse -Exclude "*.docx"
Conclusion sur la copie récursive de fichiers à l’aide de PowerShell
Pour conclure, cet article explique en détail comment copier des fichiers récursivement en PowerShell. Il apprend aux lecteurs à lister les fichiers de manière récursive à l’aide de la commande Get-ChildItem, à copier des fichiers avec l’option -Recurse, à vérifier le contenu copié dans l’emplacement cible et à écraser les fichiers existants avec l’option -Force.
Toujours avec les commandes Windows, il est aussi possible d’effectuer les mêmes copies récursives en MS-DOS.
merci pour ce tutoriel vraiment enrichissant.
Salut Eric,
Merci pour le commentaire. En espérant que le tutoriel était instructif et utile.