如何正确使用Copy-Item cmdlet?

时间:2013-07-31 14:11:08

标签: powershell copy powershell-v2.0

我正在构建一个小脚本,该脚本应将所有.zip个文件复制到名为F:\tempzip的特殊文件夹中。

我尝试使用Copy-Item cmdlet,但我没有设法做到这一点。该脚本应该复制此文件夹中的所有文件(递归),即“.zip”。

这是我正在谈论的剧本的一部分:

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

copy-item F:\tempzip

我需要添加什么?

3 个答案:

答案 0 :(得分:13)

比这简单得多。 Copy-Item 有自己的 -Recurse 开关。您所要做的就是:

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

答案 1 :(得分:11)

将项目管道到copy-item时,您需要告诉它"F:\tempzip"是目的地路径。

| Copy-Item -Destination F:\tempzip

您还可以使用where的参数Get-ChildItem切断-filter运算符的管道。

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

修改:删除不必要的foreach循环并更新说明。

答案 2 :(得分:4)

无论出于何种原因,Copy-Item递归都没有达到我想要的效果,如此处所述,以及如何记录它的工作原理。如果你在任意深的子文件夹层次结构中有一堆* .zip或* .jpg文件,并且你想将它们复制到一个地方(一个平面文件夹,在别处),我有一个涉及Get-ChildItem的管道命令更好运。假设您当前位于包含搜索根目录的文件夹中:

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

该命令将复制所有文件,而不是复制文件夹层次结构。