Как правильно использовать командлет Copy-Item?

Я создаю небольшой скрипт, который должен скопировать все .zip файлы в специальную папку под названием F:tempzip.

я попробовал с Скопировать Элементов командлет, но мне не удалось это сделать. Скрипт должен скопировать все файлы из этой папки (рекурсивно), которые являются ".промелькнуть."

Это та часть сценария, о которой я говорю:

get-childitem F:Workxxxxxxxxx -recurse | where {$_.extension -eq ".zip"} |

copy-item F:tempzip

что я должен добавить?

3 ответов


при транспортировке элементов в copy-item вы должны сказать ему, что "F:\tempzip" - путь назначения.

| Copy-Item -Destination F:\tempzip

вы также можете вырезать трубопроводы в where оператор с помощью Get-ChildItem's параметр -filter.

Get-Childitem "C:\imscript" -recurse -filter "*.zip" | Copy-Item -Destination "F:\tempzip"

редактировать: удаление ненужных foreach цикл и обновленное объяснение.


Это намного проще, чем. Скопировать Элементов своя - Recurse переключатель. Все, что вам нужно сделать, это:

Copy-Item F:\Work\xxx\xxx\xxx\*.zip F:\tempzip -Recurse

по какой-то причине рекурсия Copy-Item не выполнила то, что я хотел, как упоминалось здесь, и как она документирована для работы. Если у вас есть куча *.zip или *.jpg-файлы в произвольно глубоких иерархиях подпапок, и вы хотите скопировать их в одно место (одна плоская папка, в другом месте), мне больше повезло с командой piped с участием Get-ChildItem. Скажем, вы находитесь в папке, содержащей корень вашего поиска:

Get-ChildItem -Recurse -Include *.zip | Copy-Item -Destination C:\Someplace\Else

эта команда скопирует все файлы и не дублировать иерархии папок.