2013-12-01 5 views
1

У меня есть дерево папок со случайными именами. В подкаталогах у меня есть многократные файлы. Я пытаюсь скопировать все файлы «.psd» в каталог «_PSD», чтобы собрать их в одной папке.Powershell - собрать все .psd-файлы в том же каталоге

http://i.stack.imgur.com/mnuvL.jpg

мне удалось перечислить соответствующие файлы, используя следующий код: Powershell

ls "D:\work\76063_000\tmp" -Recurse | where {$_.Name -match "\b.*.psd" } | format-table 

Как я должен сделать, чтобы скопировать перечисленные файлы в _PSD? Помните, что я не хочу, чтобы подкаталоги находились внутри _PSD. Целью является копирование всех файлов psd непосредственно в _PSD.

Большое спасибо!

+0

Как вы планируете обрабатывать конфликты имен? Если файлы в настоящее время находятся в нескольких каталогах, и вы копируете их все в один, вы потенциально имеете несколько файлов с тем же именем. – alroc

ответ

1

Невеста, поскольку на данный момент у меня нет доступных Windows. Должен быть способ пропустить where-object и использовать -exclude в get-childitem, но у IIRC есть некоторая шелушатость в зависимости от вашей версии PowerShell.

get-childitem -recurse -filter *.psd | 
    where-object {$_.fullname -notlike "*\_PSD*"} | 
    copy-item -destination D:\work\76063_000\tmp\_PSD 

Линейные расширения добавлены для удобочитаемости.

+0

Это именно то, что мне нужно;) – Narus

+0

+1. IIRC, '-exclude' только проверяет имя файла/имя папки, поэтому для использования этого он должен будет сделать это, как' get-childitem -exclude "_PSD" | ? {$ _. PSIsContainer} | get-childitem -recurse -filter * .psd | копия .... ' –

Смежные вопросы