11

为什么

gci $from -Recurse | copy-item -Destination  $to -Recurse -Force -Container

行为方式不同

copy-item $from $to -Recurse -Force

?

我认为它应该是相同的,但不知何故它不是。为什么?

4

5 回答 5

17

您不是循环遍历文件/文件夹集合中的每个项目,而是将最后一个值传递给管道。您需要使用 Foreach-item 或 % 到 Copy-Item 命令。从那里开始,您也不需要第二个 -recurse 开关,因为您已经拥有 GCI 中的每个项目。

尝试这个:

gci $from -Recurse | % {copy-item -Path $_ -Destination  $to -Force -Container }
于 2014-02-13T11:33:32.740 回答
3

这对我有用

Get-ChildItem -Path .\ -Recurse -Include *.txt | %{Join-Path -Path $_.Directory -ChildPath $_.Name } | Copy-Item -Destination $to
于 2014-11-25T23:49:19.077 回答
0

这对我有用:

Get-ChildItem 'c:\source\' -Recurse | % {Copy-Item -Path $_.FullName -Destination 'd:\Dest\' -Force -Container }
于 2019-10-11T10:46:51.930 回答
-1

开关错了。他们应该是:

gci -Path $from -Recurse | copy-item -Destination  $to -Force -Container
于 2015-05-26T06:20:18.547 回答
-1

要循环所有项目,这应该有效:

gci -Path $from -Recurse | % { $_ | copy-item -Destination  $to -Force -Container}

只需执行 foreach 并再次管道每个项目。

于 2015-09-23T11:47:37.847 回答