Copier des fichiers et dossiers de manière récursive en PowerShell

Ce tutoriel informatique montre comment copier des fichiers et des dossiers de manière récursive avec la commande Windows PowerShell 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.

Copier des fichiers et des dossiers de manière récursive avec un script PowerShell

Windows PowerShell est un interpréteur de commandes et un langage de script basé sur des tâches et reposant sur le .NET Framework.

Windows PowerShell comprend un cmdlet (outil en ligne de commande) pour la copie de fichiers. Les cmdlets sont comme de petites commandes qui peuvent être combinées pour effectuer des tâches telles que la copie de fichiers. La cmdlet permettant de copier des fichiers s’appelle Copy-Item.

Il 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.

Windows PowerShell est conçu pour l’administration système, mais il peut également être utilisé à d’autres fins. Par exemple, il peut être utilisé pour des tâches telles que la copie récursive de plusieurs fichiers ou dossiers d’un emplacement à un autre.

Le script commence par définir l’emplacement du dossier source, puis copie tous les fichiers et dossiers de cet emplacement vers le dossier de destination.

Copie récursive de fichiers et de dossiers depuis un dossier source 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:

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

Le script a bien copié tous les fichiers et dossiers depuis le dossier WORK, y compris le dossier Folder.

Copier les fichiers en récursif et forcer l’écrasement dans le dossier cible

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

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"

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"

Toujours avec les commandes Windows, il est aussi possible d’effectuer les mêmes copies récursives en MS-DOS.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*