Используйте 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\'