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 .\Destination
y la copia .\Source
, que es lo que me gustaría repetir la próxima vez. Sin embargo, la segunda línea se copia .\Source
en la nueva .\Destination
carpeta (creación .\Destination\Source
), luego la tercera línea se sobrescribe .\Destination\Source
nuevamente.
¿Cómo puedo hacer que actúe como en el primer caso todo el tiempo? Es decir, ¿sobrescribir en .\Destination
lugar de copiar en él?
windows-7
powershell
Douglas
fuente
fuente
if exists
problema 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
bar
no existe ysolo funciona si
bar
existe. Para evitarlo, debe asegurarse de quebar
exista antes de hacer algofuente
Si solo desea copiar el contenido de la carpeta "fuente", use
fuente
destination
ya 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 -name
cp ./folder_a/*.txt -Exclude $files ./folder_b
Solo se copiará c.txt
fuente