Powershell 3.0:COPY-ITEM Filter或Include选项不起作用



当使用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

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

这是因为要输入到Copy item的项目是文件夹,而不是文件夹内的文件

执行时:

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

您说的是:Copy Item,其中Path是文件夹c:\temp。选择复制的唯一项目是目录c:\temp。然后我们说,only-包括匹配"*.txt"的项目。由于唯一的项目(文件夹"temp")与模式不匹配,我们什么也不做。

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

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

瞧!在目标文件夹中,我们有一个新的空文件夹:c:\temp2\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),通过只包括匹配"*.txt"的项目来过滤它们,并复制到目的地。

最新更新