将源文件夹中的所有文件和文件夹复制到具有特定名称的多个文件夹

时间:2017-06-07 22:34:18

标签: powershell

我有一个源文件夹(c:\ test *),我希望该文件夹复制到同一位置的所有文件夹(c:\ resultaat),但只能复制到该位置包含名称demo_profit的文件夹。

我想我差不多了,但我想错过一小部分。

chan

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

Get-ChildItem的-Directory参数需要AFAIK PSv5

Get-ChildItem -Directory -Path 'C:\resultaat\' | ForEach-Object{
  if (Test-Path (Join-Path $_.FullName 'demo_profit')){
    Copy-Item C:\test\* $_.FullName -recurse -force
  }

答案 1 :(得分:0)

因此,不清楚是否要将文件复制到包含名为demo_profit的项目的文件夹,或者名称中包含demo_profit的文件夹。第二个很简单,所以我将从那里开始:

Get-ChildItem C:\resultaat\* -Directory | 
    Where{$_.Name -match 'demo_profit'} | 
    ForEach{ Copy-Item C:\test\* -dest $_.FullName -recurse -force }

找到c:\ resultaat中有' demo_profit'的任何文件夹。作为其名称的一部分,并将所需的文件/文件夹复制到该文件夹​​中。示例:C:\ resultaat \ Folder1_demo_profit将C:\ temp中的所有文件复制到其中。

如果您正在寻找名为demo_profit的内容,并希望将文件复制到与该项目相同的文件夹中,则需要使用PSParentPath属性和一些通配符。

Get-ChildItem c:\resultaat\*\*demo_profit*

此命令会找到一个文件或文件夹,其路径如' C:\ resultaat \ Amazon \ az_demo_profit'。然后将文件复制到包含您将使用PSParentPath属性的文件夹中:

Get-ChildItem c:\resultaat\*\*demo_profit* |
    Select -Expand PSParentPath -Unique
    ForEach{ Copy-Item C:\test\* -dest $_ -recurse -force }