复制包含它的相对路径的文件

MrG*_*ant 6 powershell powershell-2.0

我需要将大量文件复制到备份文件夹,但我想保持它们的相对路径.我只需要特定的文件; 即

C:\scripts\folder\File.ext1
C:\scripts\folder2\file2.ext2
C:\scripts\file3.ext1
Run Code Online (Sandbox Code Playgroud)

但我只需要像这样复制ext1文件:

C:\backup\folder\File.ext1.bak
C:\backup\file3.ext1.bak
Run Code Online (Sandbox Code Playgroud)

源路径具有多个深度.这就是我要复制文件的方法:

$files = gci -path C:\scripts\ -recurse -include *.ext1 
$files | % { Copy-Item $_ "$($_).bak"; move-item $_ -destination C:\backup\ }
Run Code Online (Sandbox Code Playgroud)

这只是将所有文件转储到C:\ backup \中,并且似乎没有获得任何路径.不确定该部分将如何完成.

ste*_*tej 6

像这样的东西可以工作:

gci -path C:\scripts\ -recurse -include *.ext1 | 
  % { Copy-Item $_.FullName "$($_.FullName).bak"
      move-item $_.FullName -destination ($_.FullName -replace 'C:\\scripts\\','C:\backup\') }
Run Code Online (Sandbox Code Playgroud)

它并不聪明,但它快速而肮脏,无需付出很多努力.