2014-02-13 76 views
3

爲什麼獲取-ChildItem和複製項目說明

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

不以同樣的方式表現爲

copy-item $from $to -Recurse -Force 

我認爲它應該是相同的,但不知道它不是。爲什麼?

+0

有什麼區別?第二個腳本不是遞歸地複製?這裏有一個人幫助我使用%foreach來複制所有輸出http://stackoverflow.com/questions/17972783/how-to-use-the-copy-item-cmdlet-correctly – RayofCommand

回答

7

您沒有遍歷文件/文件夾集合中的每個項目,而是將最後一個值傳遞給管道。您需要使用Foreach-item或%到Copy-Item命令。從那裏,你也不需要第二次 - 開關切換,因爲你已經有了GCI中的每一件物品。

試試這個:

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

不應該'gci $ from -Recurse'獲取目錄中的所有文件,然後通過 –

+0

複製項目是否缺少'$ _'?這在PS 5.0中並不適合我運行 實際的命令是: 'gci $ from -Recurse | %{copy-item $ _ -Destination $ to -Force}' –

+0

你是正確的kumar_harsh,我忽略了原始答案中的$ _。我做了這個微小的修改。 – websch01ar

1

這裏是我

Get-ChildItem -Path .\ -Recurse -Include *.txt | %{Join-Path -Path $_.Directory -ChildPath $_.Name } | Copy-Item -Destination $to 
-1

開關是錯誤的什麼工作。他們應該是:

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

要循環的所有項目,這應該工作:

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

只需再次做的foreach和管道的每個項目。