Búsqueda de sitios web

¿Cómo copiar archivos de una carpeta a otra en PowerShell?


¿Necesita copiar archivos de una carpeta a otra carpeta? En PowerShell, es fácilmente posible. En este tutorial, le mostraré cómo copiar archivos de una carpeta a otra en PowerShell usando varios métodos.

Para copiar un archivo de una carpeta a otra en PowerShell, puede utilizar el cmdlet Copy-Item. Por ejemplo, Copy-Item -Path “C:\Source\file.txt” -Destination “C:\Destination” copiará el archivo.txt de la carpeta de origen a la de destino. Para varios archivos o directorios, incluya comodines o utilice el parámetro -Recurse para copiar el contenido completo del directorio, preservando la estructura.

Copie archivos de una carpeta a otra en PowerShell usando Copy-Item

La forma más sencilla de copiar archivos de una carpeta a otra en PowerShell es mediante el cmdlet Copy-Item. Este cmdlet está diseñado para copiar archivos, carpetas e incluso claves de registro de una ubicación a otra. Aquí hay un ejemplo básico de cómo usar Copy-Item para copiar un solo archivo:

Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination"

Este comando copiará file.txt del directorio C:\Source al directorio C:\Destination. Si el archivo de destino ya existe, PowerShell lo sobrescribirá de forma predeterminada.

Después de ejecutar el script usando el código VS, puedes ver el resultado en la siguiente captura de pantalla:

Copie varios archivos de una carpeta a otra

Para copiar varios archivos de una carpeta a otra en PowerShell, puede utilizar comodines. Por ejemplo, para copiar todos los archivos .txt de una carpeta a otra, puede utilizar el siguiente comando:

Copy-Item -Path "C:\Source\*.txt" -Destination "C:\Destination"

Este comando copiará todos los archivos con la extensión .txt del directorio C:\Source al directorio C:\Destination.

Copia recursiva

Si desea copiar todo el contenido de un directorio en PowerShell, incluidos los subdirectorios, puede utilizar el parámetro -Recurse:

Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -Recurse

Este comando copiará todos los archivos y carpetas de C:\Source a C:\Destination, manteniendo la estructura del directorio.

Preservar permisos

Para conservar los permisos de archivos al copiar, utilice el parámetro -Force:

Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination" -Force

Esto garantizará que los permisos de seguridad originales del archivo se conserven en la nueva ubicación.

Técnicas avanzadas de copia

Copiar archivos con filtrado

PowerShell le permite copiar archivos según ciertos criterios o filtros. Por ejemplo, si desea copiar archivos que se modificaron en los últimos 7 días, puede hacer algo como esto:

Get-ChildItem -Path "C:\Source" -Recurse | 
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) } |
Copy-Item -Destination "C:\Destination"

En este script, Get-ChildItem recupera todos los elementos en el directorio de origen, Where-Object los filtra según la última hora de escritura y Copy-Item copia los elementos filtrados a la carpeta de destino.

Combinando elemento de copia con elemento nuevo

A veces, es necesario asegurarse de que el directorio de destino exista antes de copiar un archivo de una carpeta a otra en PowerShell. Puedes combinar Copy-Item con New-Item para hacer esto:

New-Item -Path "C:\Destination" -ItemType Directory -Force
Copy-Item -Path "C:\Source\file.txt" -Destination "C:\Destination"

El cmdlet New-Item crea el directorio de destino si no existe, y el parámetro -Force garantiza que no arrojará un error si el directorio ya existe.

Usando Robocopia

Para una copia de archivos más sólida, especialmente para archivos más grandes o una gran cantidad de archivos, puede usar Robocopy (Copia robusta de archivos), una utilidad de línea de comandos que viene con Windows. Así es como puede usarlo dentro de un script de PowerShell:

robocopy C:\Source C:\Destination /E

El parámetro /E le dice a Robocopy que copie subdirectorios, incluidos los vacíos.

Manejo de errores al copiar de una carpeta a otra en PowerShell

Al copiar archivos de una carpeta a otra en PowerShell, es importante controlar los errores. Puede utilizar el parámetro -ErrorAction para especificar cómo PowerShell debe manejar los errores. Por ejemplo, para continuar copiando incluso si ocurre un error, puedes usar:

Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -ErrorAction Continue

Si desea registrar errores en un archivo, puede redirigir la salida del error:

Copy-Item -Path "C:\Source\*" -Destination "C:\Destination" -ErrorAction SilentlyContinue 2> "C:\log.txt"

Conclusión

Copiar archivos de una carpeta a otra es un requisito común que PowerShell puede cumplir fácilmente. Puede utilizar el cmdlet Copy-Item básico de PowerShell o técnicas más avanzadas como filtrado y Robocopy.

En este tutorial de PowerShell, he explicado cómo copiar archivos de una carpeta a otra en PowerShell usando diferentes métodos con ejemplos.

Artículos relacionados