13

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

我尝试使用Copy-Item cmdlet,但没有成功。该脚本应从该文件夹中复制所有文件(递归),这些文件是“.zip”。

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

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

我要补充什么?

4

3 回答 3

13

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

Copy-Item F:\Work\xxx\xxx\xxx\*.zip F:\tempzip -Recurse
于 2013-07-31T14:51:49.273 回答
11

当管道项目时,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循环和更新的解释。

于 2013-07-31T14:37:53.310 回答
5

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

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

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

于 2015-06-30T19:52:20.367 回答