Powershell:为什么递归不起作用?

时间:2017-03-28 16:02:56

标签: powershell

嗨我有一个理想情况下应该复制项目并将其粘贴到目标文件夹(包括其所有子文件夹)的脚本。但是我无法将它复制到子文件夹中。

以下是代码:

Copy-Item "\\postowl\PEC Group\HR\Performance snapshot\Performance Snapshot Macro.xlsm" -Destination "\\postowl\PEC Group\HR\Performance snapshot\2017-2018" -Recurse -Force

请帮忙!

2 个答案:

答案 0 :(得分:0)

Recurse将子文件夹和项目从源复制到目标,保留目录结构。它不会在目的地中递归并在目的地中制作多个副本。您可以使用ForEach-Object输出中的Get-ChildItem循环来检索要复制到的所有文件夹。

Get-ChildItem "\\postowl\PEC Group\HR\Performance snapshot\2017-2018" -Directory -Recurse | % {
Copy-Item "\\postowl\PEC Group\HR\Performance snapshot\Performance Snapshot Macro.xlsm" -Destination $_.fullname -Force }

答案 1 :(得分:0)

我观察的两件事。

1)您告诉您正在复制包含其子文件夹的项目,但在源中您提到了一个带扩展名的文件名。不确定你的情况下是否是文件夹名称。

2)我发现在目的地你没有进入最后一级文件夹。

所以把它放进去检查:

Copy-Item "\\postowl\PEC Group\HR\Performance snapshot\*.xlsm" -Destination "\\postowl\PEC Group\HR\Performance snapshot\2017-2018\" -Recurse -Force

注意:如果是特定文件,则可以删除通配符,因为这将复制扩展名为.xlsm的所有文件。我保留了它,因为我假设你在该文件夹下只有一个文件。

请参阅文档和PS的问题: Copy-Item Nature & Issue