Tengo un directorio de origen con algunos archivos, que me gustaría copiar a una carpeta de destino. El destino puede existir y puede que ya tenga archivos. Todos los archivos con el mismo nombre que los de Source deben sobrescribirse.
Si ejecuto esto en Powershell:
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Copy-Item Source Destination -Force -Recurse
Luego, la primera línea crea la carpeta .\Destinationy la copia .\Source, que es lo que me gustaría repetir la próxima vez. Sin embargo, la segunda línea se copia .\Sourceen la nueva .\Destinationcarpeta (creación .\Destination\Source), luego la tercera línea se sobrescribe .\Destination\Sourcenuevamente.
¿Cómo puedo hacer que actúe como en el primer caso todo el tiempo? Es decir, ¿sobrescribir en .\Destinationlugar de copiar en él?
windows-7
powershell
Douglas
fuente
fuente

if existsproblema fácilmente y no requerirá que elimine su destino de manera recursiva de manera forzada, lo que conlleva sus propios peligros.Respuestas:
Entonces el problema es que
solo funciona si
barno existe ysolo funciona si
barexiste. Para evitarlo, debe asegurarse de quebarexista antes de hacer algofuente
Si solo desea copiar el contenido de la carpeta "fuente", use
fuente
destinationya existe.La respuesta de Steven Penny https://superuser.com/a/742719/126444 no elimina el contenido original del directorio de destino, solo lo agrega. Necesitaba reemplazar completamente la carpeta de destino con el contenido de la fuente y creé 2 funciones:
fuente
Digamos que tiene la siguiente estructura de directorios
raíz
En La carpeta raíz puede lograr los resultados que desea mediante la siguiente secuencia de comandos:
$files = gci ./folder_b -namecp ./folder_a/*.txt -Exclude $files ./folder_bSolo se copiará c.txt
fuente