Comment copier ou déplacer des fichiers dans PowerShell

15 mai 2021 1201 Vues

Vous vous demandez comment copier ou déplacer des fichiers avec PowerShell ?

Cette zone S vous apprend à utiliser PowerShell pour copier un fichier avec Get-ChildItem et Copier l'élément Applets de commande. Le guide couvre trois façons de copier des fichiers avec PowerShell.

Enfin, vous apprendrez également à déplacer des fichiers avec PowerShell. Contrairement à la copie d'un fichier, lorsque vous déplacez un fichier, le fichier est supprimé de sa source.

Parcourir les sujets de publication

Comment copier un seul fichier avec PowerShell

Comment copier un seul fichier avec PowerShell

Dans cette première section, je vais vous apprendre à copier un seul fichier avec PowerShell. Que vous copiez un seul fichier ou tous les fichiers d'un dossier, la commande PowerShell comporte 2 parties.

Dans la première partie de la commande, vous utilisez le Get-ChildItem Applet de commande pour liste le fichier. Alors vous tuyau la sortie du Get-ChildItem commande au Copier l'élément Applet de commande.

Comment lister un fichier avec Get-ChildItem

Comme je l'ai mentionné dans l'introduction de cette section, avant de copier un fichier avec PowerShell, vous devez d'abord liste avec Get-ChildItem .

Dans cet exemple, je souhaite copier le fichier appelé Byte Count Tool, de son dossier actuel vers D:G-DriveWork ToolsProducts Portal 2.

Comment copier un seul fichier avec PowerShell

Pour lister le fichier texte, je vais exécuter la commande ci-dessous :

|__+_|

Le moyen le plus rapide d'exécuter la commande consiste à placer une invite PowerShell côte à côte avec le dossier contenant le fichier. Ensuite, entrez Get-ChildItem dans l'invite PowerShell - appuyez sur la touche de la barre d'espace pour ajouter un espace.

Ensuite, faites glisser le fichier du dossier vers l'invite PowerShell.

Enfin, pour répertorier les propriétés du fichier, avec l'invite PowerShell ouverte, appuyez sur la touche Entrée.

Comment canaliser la sortie de Get-ChildItem À Copier l'élément

Une fois que vous avez répertorié les propriétés du fichier que vous souhaitez copier, dirigez-le vers le Copier l'élément . Ensuite, sur le Copier l'élément partie de la commande, spécifiez le dossier dans lequel vous souhaitez copier le fichier.

Voici la commande PowerShell pour copier un fichier :

|__+_| J'ai ajouté des guillemets autour du chemin du dossier car il y a des espaces entre les deux.

Lorsque vous appuyez sur Entrée, la commande s'exécutera - le fichier sera copié vers la destination spécifiée

Comment copier tous les types de fichiers dans un dossier avec PowerShell

Comment copier tous les types de fichiers dans un dossier avec PowerShell

Dans la dernière section de ce guide, je vous ai montré comment copier un seul fichier avec PowerShell. Cependant, il peut arriver que vous deviez copier tous les types de fichiers dans un dossier.

Dans cette section, vous apprendrez à copier tous les fichiers avec une extension de fichier spécifique d'un dossier vers un autre dossier. Par exemple, vous pouvez copier tous les fichiers avec l'extension de fichier .log de C:Windows vers un autre dossier.

Ce processus est similaire à la copie d'un seul fichier, mais il nécessite des étapes supplémentaires. Plus précisément, pour copier plusieurs fichiers avec PowerShell, nous devons créer un script simple.

La première partie du script consiste à utiliser le Get-ChildItem Applet de commande pour répertorier les fichiers que vous souhaitez copier. Ensuite, dans la deuxième partie du script, vous utiliserez le Pour chaque boucle pour parcourir la liste des fichiers.

Enfin, au sein du Pour chaque boucle, vous incluez la Copier l'élément Applet de commande pour copier chacun des fichiers vers la destination requise.

Pour vous faciliter la compréhension du script PowerShell simple que nous sommes sur le point de créer, je diviserai cette section en deux sous-sections.

Comment lister tous les types de fichiers avec Get-ChildItem

Dans cet exemple, je veux copier tous les fichiers avec l'extension de fichier .log de C:Windows vers D:Log Files. Cependant, comme déjà indiqué ci-dessus, la première étape consiste à utiliser le Get-ChildItem Applet de commande pour répertorier tous les fichiers avec l'extension de fichier .log.

Encore une fois, pour vous faciliter la compréhension de la commande finale, commençons par les bases. Tout d'abord, répertorions tous les fichiers et dossiers du dossier source - avec la commande ci-dessous :

|__+_|

La dernière commande affiche à la fois les fichiers et les dossiers.

Comment copier tous les types de fichiers dans un dossier avec PowerShell

Cependant, nous voulons utiliser PowerShell pour copier uniquement les fichiers avec l'extension de fichier .log. Nous allons donc ajouter une autre commande qui affichera ces fichiers seuls.

Jetez un autre coup d'œil à la dernière capture d'écran. La dernière colonne s'appelle Nom. Il s'agit du nom du fichier ou du dossier. Nous utiliserons ces informations sous peu.

Pour atteindre cet objectif, nous dirigerons la sortie de Get-ChildItem C:Windows vers un Où-Objet commander. Voici la commande qui fait cette astuce.

|__+_| Vous souvenez-vous que je vous ai dit de prendre note de la colonne Nom du résultat de Get-ChildItem C:Windows ? Dans PowerShell, vous utilisez le fichier $_. variable automatique pour référencer des objets. Dans la commande ci-dessus, j'ai dit à PowerShell d'afficher uniquement les objets dont le nom inclut '.log'. Enfin, j'ai redirigé le résultat vers l'applet de commande Select-Object et lui ai dit d'afficher le Nom complet du dossier. le Nom complet inclut le chemin du fichier.

Voici le résultat de la commande ci-dessus. Nous avons éliminé toutes les autres informations - nous n'avons plus que les fichiers à copier. Nous n'avons pas fini avec cette partie cependant - avant de passer à la dernière partie de la création du script, nous devons ajouter un peu plus.

Ce bit consiste à ajouter la dernière commande à une variable - j'appellerai la variable fichiers journaux . Voici la commande qui fait ce travail.

|__+_|

La seule différence entre cette commande et la dernière est le $logfiles = bit. Cela indique à PowerShell d'enregistrer la sortie de Get-ChildItem C:Windows | Où-Objet { $_.Name -like ‘*.log’ } | Select-Object FullName – dans une variable appelée fichiers journaux .

Contrairement à la dernière commande, si j'exécute maintenant la commande la plus récente, elle n'affichera aucun résultat. La raison en est que la sortie est maintenant enregistrée dans la variable au lieu de l'afficher sur la console.

Comment copier plusieurs fichiers avec PowerShell Pour chaque boucler

Dans cette dernière partie de la création de notre script, nous allons introduire la magie Boucle ForEach . Si vous souhaitez en savoir plus sur la boucle ForEach et sa syntaxe, cliquez sur Boucle ForEach .

En général, la syntaxe d'une boucle ForEach ressemble à ceci :

|__+_|

Donc, si nous appliquons cela à notre situation – en gardant à l'esprit que nous voulons copier tous les fichiers avec l'extension .log avec PowerShell – notre commande ForEach ressemblera à ceci :

|__+_|

Enfin, combinons cette dernière commande avec le Get-ChildItem de la dernière section. Le script final ressemblera à ceci :

|__+_| Notez comment j'ai inclus . Nom complet dans la partie $logfiles de la boucle ForEach. C'est parce que j'ai utilisé l'applet de commande Select-Object dans la première partie de la commande. L'ajout de ce bit élimine le nom de la colonne. Sinon, la commande renverra des erreurs.

Si vous copiez les commandes ci-dessus dans PowerShell ISE et que vous les enregistrez, vous avez votre script ! Cependant, vous pouvez toujours exécuter les commandes individuelles comme indiqué dans la capture d'écran ci-dessous.

La commande ci-dessus s'exécute et PowerShell revient à son invite comme si de rien n'était. Cependant, lorsque vous ouvrez le dossier de destination que vous avez spécifié dans le bit de boucle ForEach de la commande, la commande PowerShell aurait copié les fichiers - voir la capture d'écran ci-dessous…

Comment copier tous les types de fichiers dans un dossier et tous les sous-dossiers

Comment copier tous les types de fichiers dans un dossier et tous les sous-dossiers

Jusqu'à présent, ce guide a couvert les étapes pour copier un seul fichier avec PowerShell. De plus, le guide a également couvert les étapes pour copier plusieurs fichiers à partir d'un dossier.

Nous avons couvert quelques excellentes situations de copie de fichiers PowerShell.

Cependant, il existe des situations où vous devez copier tous les fichiers avec une extension de fichier spécifique à partir d'un dossier et de tous ses sous-dossiers .

Si je continue avec mon dernier exemple, disons que je veux copier tous les fichiers avec l'extension de fichier .log de C:Windows dossier et tous ses sous-dossiers – je vais simplement modifier le Get-ChildItem partie de cette commande :

|__+_|

Pour obtenir le Get-ChildItem commande pour lister tous les fichiers avec l'extension de fichier .log dans C:Windows et tous ses sous-dossiers - je vais ajouter un Get-ChildItem paramètre de commande appelé Recurser .

Dans cet esprit, ma nouvelle commande ressemblera maintenant à ceci :

|__+_|

Pour enfoncer le clou, je vais exécuter la commande Get-ChildItem sans le $logfiles = bit. La commande renvoie des erreurs car j'essaie d'accéder à des fichiers auxquels je n'ai pas l'autorisation d'accéder.

Comment copier tous les types de fichiers dans un dossier et tous les sous-dossiers

Pour corriger cette erreur, laissez-moi essayer d'ouvrir PowerShell en tant qu'administrateur. Maintenant, lorsque j'exécute la même commande, elle renvoie des résultats.

Contrairement à la dernière commande qui n'incluait pas le Recurser paramètre, cette commande renvoie beaucoup plus de fichiers. En effet, la commande a renvoyé tous les fichiers du dossier de niveau supérieur ainsi que les fichiers de tous ses sous-dossiers.

Comment copier tous les types de fichiers dans un dossier et tous les sous-dossiers

Enfin, pour copier tous les fichiers d'un dossier et tous ses sous-dossiers avec PowerShell, exécutez une commande similaire à la commande ci-dessous.

N'oubliez pas de changer les parties de votre dossier. J'ai mis en gras les chemins des dossiers source et de destination pour vous permettre de les repérer facilement et de les remplacer par le vôtre. |__+_| Si vous souhaitez enregistrer cette commande dans PowerShell ISE et l'exécuter en tant que script, vous pouvez ajouter la variable ErrorAction à la commande Get-ChildItem. Avec la variable ErrorAction, le script final ressemblera à ceci : |__+_|

Comment déplacer des fichiers dans PowerShell

Outre la copie de fichiers, PowerShell peut également Se déplacer des dossiers. La différence est que lorsque vous déplacez un fichier, il est supprimé de son dossier source.

Ainsi, si la copie et le déplacement de fichiers sont à peu près les mêmes, cela signifie que vous pouvez utiliser les mêmes commandes que celles que nous avons utilisées dans ce guide avec une légère modification.

Pour vous faciliter la tâche, j'ai répertorié toutes les commandes couvertes dans ce guide jusqu'à présent. Ensuite, pour chaque commande, je fournis le déplacer le fichier équivalent de la commande.

Avant de poursuivre, il est important de mentionner que la seule différence dans les commandes est le bit Copy-Item. À la place d'utiliser Copier l'élément pour copier un fichier, pour déplacer un fichier, vous utiliserez Move-Item .

Comment déplacer un seul fichier avec PowerShell

La commande pour copier un seul fichier dans PowerShell est :

|__+_|

Cependant, pour déplacer le fichier, utilisez plutôt cette commande :

|__+_|

Comment déplacer tous les types de fichiers dans un dossier avec PowerShell

Comme déjà discuté ci-dessus, voici les commandes pour copier tous les types de fichiers dans un dossier.

|__+_|

En revanche, pour déplacer les fichiers, utilisez plutôt cette commande.

NE PAS exécutez la commande ci-dessous sans modifier le C:Windows partie. Si vous exécutez la commande, des fichiers importants du système d'exploitation peuvent être déplacés et votre ordinateur peut devenir instable. Ces commandes sont uniquement à des fins d'illustration ! |__+_|

Comment déplacer tous les types de fichiers dans un dossier et tous les sous-dossiers

Enfin, les commandes ci-dessous copient tous les fichiers du dossier source et de tous ses sous-dossiers.

|__+_|

Pour déplacer les fichiers, utilisez plutôt cette commande.

|__+_|

J'espère que vous avez trouvé utiles les méthodes de copie et de déplacement de fichiers avec PowerShell décrites dans ce guide.

Si vous l'avez trouvé utile, merci de voter Oui à la question Was this post Helpful ci-dessous.

Cependant, si aucune des méthodes ne fonctionnait pour vous ou si vous aviez besoin d'autre chose que les méthodes décrites, cliquez sur Non à la question Was this post Helpful ci-dessous. Ensuite, veuillez nous fournir des détails supplémentaires. Nous examinons les commentaires de nos lecteurs et mettons à jour nos guides pour répondre en permanence à vos besoins.

Alternativement, vous pouvez poser une question, laisser un commentaire ou fournir des commentaires avec le formulaire Laisser une réponse qui se trouve à la fin de cette page.

Enfin, pour plus de zones S techniques PowerShell, visitez notre page de guide pratique Windows PowerShell. Vous pouvez également trouver notre page Travail à domicile très utile.