2012-02-07 10 views
5

Sto cercando di copiare i file da una struttura di directory in una nuova cartella. Non sto cercando di preservare la struttura dei file, ma solo i file. La struttura del file è tale che non ci possono essere cartelle nidificate, ma qualsiasi cosa in una cartella denominata 'vecchia' non voglio spostarla.Copia i file dalla struttura delle directory ma escludi una cartella denominata

Ho fatto un paio di tentativi, ma la mia conoscenza di Powerhell è molto limitata.

Esempio essendo in cui è presente la struttura di file corrente:

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

Questo mi dà tutti i file tutto quello che voglio, inclusi tutti i file che non voglio. Non voglio includere alcun file nella "vecchia" cartella. Da notare: ci sono più cartelle "vecchie". Ho provato -exclude, ma sembra che riguardi solo il nome del file, e non sono sicuro di come -exclude su un nome di percorso, pur continuando a copiare i file.

Qualsiasi aiuto?

risposta

6

ne dite di questo:

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

escludere tutto ciò che ha '\ vecchia \' ovunque nel suo percorso.

+0

Grazie, questo è quello che sto cercando! – Feety

+0

La domanda era un po 'ambigua e non saprei dire se una cartella "vecchia" avrebbe o meno sottocartelle. Questo esclude entrambi. – mjolinor

+0

Sì, era ambiguo e volevo escludere le sottocartelle di "vecchio". Avrei dovuto specificarlo. Grazie ancora! – Feety

4

Se introduciamo un po 'di where-object nella pipeline, penso che otterrete ciò che cercate. Ogni oggetto che ha una proprietà denominata () con una proprietà denominata Name con un valore di old non verrà passato a Copy-Item.

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

(testato)

+0

Grazie, questo è quello che ho chiesto. Apprezzo la spiegazione su come accedere al nome della directory. Questo si rivelerà utile. Grazie! – Feety

Problemi correlati