J'ai un répertoire Source avec quelques fichiers, que je voudrais copier dans un dossier Destination. La destination peut exister et elle peut déjà contenir des fichiers. Tous les fichiers portant le même nom que ceux de Source doivent être remplacés.
Si je lance ceci dans Powershell:
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Ensuite, la première ligne crée le dossier .\Destination
et y copie .\Source
, ce que j'aimerais répéter pour la prochaine fois. Cependant, la deuxième ligne copie .\Source
à la place dans le nouveau .\Destination
dossier (création .\Destination\Source
), puis la troisième ligne écrase à .\Destination\Source
nouveau.
Comment puis-je le faire agir comme dans le premier cas tout le temps? Autrement dit, écraser .\Destination
au lieu de le copier?
windows-7
powershell
Douglas
la source
la source
if exists
problème facilement et ne vous obligera pas à supprimer de manière récursive votre destination non plus, ce qui présente ses propres dangers.Réponses:
Le problème est que
ne fonctionne que s'il
bar
n'existe pas etne fonctionne que s'il
bar
existe. Donc, pour contourner, vous devez vous assurer qu'ilbar
existe avant de faire quoi que ce soitla source
Si vous souhaitez uniquement copier le contenu du dossier "source", utilisez
la source
destination
existe déjà.La réponse de Steven Penny https://superuser.com/a/742719/126444 ne supprime pas le contenu original du répertoire cible, juste en y ajoutant. J'avais besoin de remplacer complètement le dossier cible par le contenu de la source et j'ai créé 2 fonctions:
la source
Disons que vous avez la structure de répertoires suivante
racine
Dans le dossier racine, vous pouvez obtenir les résultats souhaités par la séquence de commandes suivante:
$files = gci ./folder_b -name
cp ./folder_a/*.txt -Exclude $files ./folder_b
Seul c.txt sera copié
la source