在排除目录中找到Powershell递归复制除文件

时间:2018-09-18 17:58:24

标签: powershell

嗨,我有一个名为“ A”的文件夹,而文件夹“ A”中包含文件和子文件夹。我还有一个名为“排除”的文件夹目录,其中包含一些从“ A”复制的文件和文件夹。我正在寻找一个Powershell脚本或命令行选项,它将从A中所有在排除目录中找不到的对象复制并移动到名为“输出”的新文件夹目录中。

谢谢, -B

1 个答案:

答案 0 :(得分:1)

使用Get-ChildItem获取排除目录中的文件列表,然后仅获取文件名并将其保存在数组中。

(可选)将New-Item-Force参数一起使用,以确保输出目录存在,然后再向其中发送文件。

接下来使用Get-ChildItem遍历源(A)目录中的所有文件,使用Where-Object-notin运算符排除名称与从中收集的文件相同的文件您的排除目录,然后使用Move-Item将文件移动到目标(输出)目录。

[string[]]$filenamesToExclude = Get-ChildItem -Path 'c:\somewhere\exclusion' -Recurse | Select-Object -ExpandProperty Name
New-Item -Path 'c:\somewhere\output\' -ItemType 'Directory' -Force | Out-Null #ensure the target directory exists / don't output this command's return value to the pipeline
Get-ChildItem -Path 'c:\somewhere\A' -Recurse | Where-Object {$_.Name -notin $filenamesToExclude} | Move-Item -Destination 'c:\somewhere\output\'