2012-02-07 32 views
5

Estoy buscando copiar archivos de una estructura de directorios a una carpeta nueva. No estoy buscando preservar la estructura de archivos, solo obtener los archivos. La estructura del archivo es tal que puede haber carpetas anidadas, pero cualquier elemento en una carpeta llamada 'viejo' no quiero que se mueva.Copiar archivos de la estructura de directorios pero excluir una carpeta con nombre

Hice un par de intentos, pero mi conocimiento de Powershell es muy limitado. estar donde existe la estructura de archivos actual

Ejemplo:

Get-ChildItem -Path "C:\Example\*" -include "*.txt -Recurse |% {Copy-Item $_.fullname "C:\Destination\"} 

Esto me da todos los archivos de todo lo que quiero, incluidos todos los archivos que no quiero. No quiero incluir ningún archivo que esté en la carpeta 'anterior'. Para tener en cuenta: hay varias carpetas 'antiguas'. Intenté -excluir, pero parece que solo pertenece al nombre del archivo, y no estoy seguro de cómo excluir un nombre de ruta, mientras sigo copiando los archivos.

¿Algún ayuda?

Respuesta

6

¿Qué tal esto:

C:\Example*" -include "*.txt -Recurse | 
    ?{$_.fullname -notmatch '\\old\\'}| 
    % {Copy-Item $_.fullname "C:\Destination\"} 

Excluir todo lo que tiene '\ viejo \' en cualquier parte de su trayectoria.

+0

¡Gracias, esto es lo que estoy buscando! – Feety

+0

La pregunta era un poco ambigua, y no podía decir si una carpeta "vieja" tendría subcarpetas o no. Esto excluye ambos. – mjolinor

+0

Sí, era ambiguo, y quería que las subcarpetas de "viejo" quedaran excluidas. Debería haber especificado eso. ¡Gracias de nuevo! – Feety

4

Si introducimos un poco where-object en la tubería, creo que obtendrá lo que busca. Cada objeto que tiene una propiedad llamada Directory (System.IO.FileInfo) con una propiedad llamada Name con un valor de old no se pasará al Copy-Item.

Get-ChildItem -Path "C:\Example*" -include *.txt -Recurse | ? {-not ($_.Directory.Name -eq "old")} | % {Copy-Item $_.fullname "C:\Destination\"} 

(no probado)

+0

Gracias, esto es lo que pedí. Agradezco la explicación sobre cómo acceder al nombre del directorio. Esto será útil. ¡Gracias! – Feety

Cuestiones relacionadas