Saltar al contenido

Escribir un script de PowerShell para copiar archivos con cierta extensión de una carpeta a otra

Solución:

Solución 1:

Get-ChildItem le permite listar archivos y directorios, incluso de forma recursiva con filtros de nombre de archivo. Copy-Item le permite copiar un archivo.

Hay mucha superposición en términos de selección de archivos, a menudo Copy-Item por sí solo es suficiente dependiendo de los detalles de lo que necesita (por ejemplo, ¿desea conservar la estructura de la carpeta?)

Para copiar todo *.foo y *.bar de StartFolder a DestFolder:

Copy-Item -path "StartFolder" -include "*.foo","*.bar" -Destination "DestFolder"

Si necesita conservar la estructura de la carpeta, las cosas se complican porque necesita crear el nombre de la carpeta de destino, algo como:

$sourcePath="C:StartFolder"
$destPath="C:DestFolder"

Get-ChildItem $sourcePath -Recurse -Include '*.foo', '*.bar' | Foreach-Object `
    {
        $destDir = Split-Path ($_.FullName -Replace [regex]::Escape($sourcePath), $destPath)
        if (!(Test-Path $destDir))
        {
            New-Item -ItemType directory $destDir | Out-Null
        }
        Copy-Item $_ -Destination $destDir
    }

Pero robocopy es probable que sea más fácil:

robocopy StartFolder DestFolder *.foo *.bar /s

Al final, la forma de elegir dependerá de los detalles de lo que se necesita.

(En lo anterior he evitado los alias (p. Ej. Copy-Item en vez de copy) y usan explícitamente nombres de parámetros incluso si son posicionales).

Solucion 2:

No puedo abordar la parte de IIS, pero la copia del archivo mientras se conserva la estructura del directorio puede ser mucho más simple de lo que se muestra en las otras respuestas:

Copy-Item -path "StartFolder" -Recurse -Include "*.foo","*.bar" -Destination "DestFolder" -Container

los -Container El argumento es la parte mágica que replicará la estructura en el destino tal como está en la fuente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *