Comment copier des fichiers récursivement en PowerShell?

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.

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
Afficher tous les fichiers de manière récursive en PowerShell
Afficher tous les fichiers de manière récursive en PowerShell

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
Copier les fichiers et les dossiers de manière récursive en PowerShell avec Copy-Item
Copier des fichiers et des dossiers de manière récursive en PowerShell avec Copy-Item

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
Afficher les fichiers et dossiers dans le dossier cible récursivement en PowerShell
Afficher les fichiers et dossiers dans le dossier cible récursivement en PowerShell

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
Copier des fichiers et dossiers avec PowerShell de manière récursive et écraser la cible
Copier des fichiers et dossiers avec PowerShell de manière récursive et écraser la cible

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.

Copier récursivement des fichiers en cmd

2 réflexions sur “Comment copier des fichiers récursivement en PowerShell?”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *