Je construis un petit script qui devrait copier tout .Zip
fichiers dans un dossier spécial appelé F:\tempzip
.
Je l'ai essayé avec Copy-Item cmdlet, mais je n'ai pas réussi à le faire. Le script doit copier tous les fichiers de ce dossier (récursivement) qui sont ".Zip".
C'est la partie du script dont je parle:
get-childitem F:\Work\xxx\xxx\xxx -recurse `
| where {$_.extension -eq ".Zip"} `
| copy-item F:\tempzip
Que dois-je ajouter?
Lorsque vous redirigez des éléments vers copy-item
, Vous devez lui indiquer que "F:\tempzip"
Est le chemin de destination.
| Copy-Item -Destination F:\tempzip
Vous pouvez également couper la tuyauterie vers l'opérateur where
en utilisant le paramètre Get-ChildItem
De -filter
.
Get-Childitem "C:\imscript" -recurse -filter "*.Zip" | Copy-Item -Destination "F:\tempzip"
Edit: Suppression de la boucle foreach
inutile et explication mise à jour.
C'est beaucoup plus simple que ça. Copy-Item a son propre commutateur - Recurse. Tout ce que tu dois faire est:
Copy-Item F:\Work\xxx\xxx\xxx\*.Zip F:\tempzip -Recurse
Pour une raison quelconque, la récursion Copy-Item n'a pas accompli ce que je voulais, comme mentionné ici, et comment elle est documentée pour fonctionner. Si vous avez un tas de fichiers * .Zip ou * .jpg dans des hiérarchies de sous-dossiers arbitrairement profondes, et que vous souhaitez les copier dans un seul endroit (un dossier plat, ailleurs), j'ai eu plus de chance avec une commande piped impliquant Get-ChildItem . Disons que vous êtes actuellement dans le dossier contenant la racine de votre recherche:
Get-ChildItem -Recurse -Include *.Zip | Copy-Item -Destination C:\Someplace\Else
Cette commande copiera tous les fichiers et ne dupliquera pas les hiérarchies de dossiers.