这是因为您将输入Copy-Item的项目是
文件夹,而不是文件夹内部的
文件。
当您执行以下命令时:
Copy-Item -Path c:\temp -Include "*.txt" -Destination C:\temp2
你说的是:复制项目,其中路径是文件夹 c:\temp。唯一选择要复制的项目是目录 c:\temp。然后我们说,只包括与“*.txt”匹配的项。由于唯一的项(文件夹“temp”)不匹配该模式,所以我们什么也不做。
为了证明这一点,让我们将包含筛选器更改为“temp”,并重新执行它:
Copy-Item -Path c:\temp -Include "temp" -Destination C:\temp2
完成!在目标文件夹中,我们有了一个新的空文件夹:c:\temp2\temp。(它是空的,因为我们只复制了文件夹"temp",我们没有告诉它复制其他任何东西)
因此,在第二部分中,当您执行:
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 内部的所有项目,而不是文件夹 c:\temp 本身),按仅包括符合“*.txt”模式的项目进行过滤,并复制到目标位置。