递归复制除子目录和ITS CONTENT之外的目录

时间:2014-05-06 13:06:24

标签: powershell

我找到了解决方案,但此解决方案并未排除所排除的子目录的内容。

我希望将目录递归复制到另一个位置,但不包括子目录"视频"及其内容。 下一个命令完成,但不排除子目录"视频"及其内容。

# PowerShell version: 4.0
# This command copy recursively the directory "J:\All" to "J:\Users\John\Desktop\my_backup", excluding "J:\All\Videos"
Copy-Item -Recurse -Path ("J:\All" | ? { $_.FullName -NotMatch ("^J:\\All\\Videos") }) "J:\Users\John\Desktop\my_backup"

谢谢!

2 个答案:

答案 0 :(得分:3)

RoboCopy是一个更好的解决方案。见https://superuser.com/questions/482112/using-robocopy-and-excluding-multiple-directories

robocopy J:\All J:\Users\John\Desktop\my_backup /MIR /XD j:\all\videos

答案 1 :(得分:0)

试试这个:

$Source = 'J:\All'
$Destination = 'J:\Users\John\Desktop\my_backup\'
$Exclude = 'J:\All\Videos'

Get-Childitem -Recurse -Path $Source | 
Where-Object  { $Exclude -notcontains $_.Directory } |
foreach {
 $TrimmedPath = ($_.fullname -replace [regex]::escape($Source)).trim('\') |
 copy-item  -Destination "$($Destination.Trim('\'))\$TrimmedPath"
}