Powershell 3.0:COPY-ITEM 过滤器或包含选项不起作用

Posted

技术标签:

【中文标题】Powershell 3.0:COPY-ITEM 过滤器或包含选项不起作用【英文标题】:Powershell 3.0: COPY-ITEM Filter or Include options not working 【发布时间】:2014-01-12 20:24:03 【问题描述】:

在使用 Powershell 3.0 时,-Filter 或 -Include 参数是否适用于任何人?我已经尝试了以下两个命令:

Copy-Item -Path c:\temp -Include "*.TXT" -Destination C:\temp2

Copy-Item -Path c:\temp -Filter "*.TXT" -Destination C:\temp2

实际上,对于 -Filter 选项,会在 c:\TEMP2 中创建一个空的“temp”文件夹。我知道以下命令有效:

Copy-Item -Path c:\temp\*.TXT -Destination C:\temp2

但只是想知道以前是否有人遇到过这个问题?

【问题讨论】:

【参考方案1】:

这是因为您输入 Copy-Item 的项目是 文件夹,而不是文件夹内的 文件

当你执行时:

Copy-Item -Path c:\temp -Include "*.txt" -Destination C:\temp2

您是说:复制项目,其中路径是文件夹 c:\temp。选择复制的唯一项目目录c:\temp。然后我们说,只有 -Include 匹配“*.txt”的项目。由于唯一的项目(文件夹“temp”)与模式不匹配,我们什么也不做。

为了证明这一点,让我们将 Include 过滤器更改为“temp”,然后重新执行它:

Copy-Item -Path c:\temp -Include "temp" -Destination C:\temp2

瞧!在目标文件夹中,我们有一个新的空文件夹:c:\temp2\temp。 (它是空的,因为我们告诉它复制的唯一项目是文件夹“temp”,我们没有告诉它复制其他任何东西)

所以对于第 2 部分,当你执行时:

Copy-Item -Path c:\temp\*.txt -Destination C:\temp2

之所以有效,是因为您是说,使用 *.txt,遍历目录中与模式 *.txt 匹配的所有项目,将这些路径提供给 Copy-Item,然后复制到目标。

为了证明这一点,让我们改变它,并指定一个包含过滤器:

Copy-Item -Path c:\temp\* -Include "*.txt" -Destination C:\temp2

我们在这里说的是,获取文件夹 c:\temp 中的所有项目(即,我们获取文件夹 c:\temp 中的所有项目inside,而不是 the 文件夹 c:\temp),通过仅包含匹配“*.txt”的项目来过滤它们,然后复制到目标位置。

【讨论】:

这很容易。谢谢小费。圣诞快乐! 我喜欢这个答案。我希望它有效。我正在使用-Recursive,这似乎破坏了-Include。这是一个已知的问题?有解决方法吗?谢谢!

以上是关于Powershell 3.0:COPY-ITEM 过滤器或包含选项不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Powershell Copy-Item 目标不明确

如何修复“value null Copy-Item Powershell”错误

Powershell Copy-Item 退出代码 1

Powershell脚本找不到C盘

如何将 PowerShell 版本从 2.0 升级到 3.0

powershell 使用 Copy_Item cmdlet 将文件复制到远程计算机问题