Копировать только определенную структуру папок из данного дерева с определенным типом файла - PullRequest
0 голосов
/ 28 марта 2019

Я написал сценарий PS для резервного копирования файлов конфигурации в папке резервного копирования. Требуется копировать только те папки, в которых есть файлы конфигурации.
Я использую команду copy-item, но когда я запустил скрипт, я обнаружил, что ненужные папки копируются.

Я прикрепил скриншот для более подробной информации.

Ток:

Copy-Item -Path $SourcePath –Filter $fileType -Destination $DestinationPath –Recurse

Я пытался:

Get-ChildItem $sourcePath -File -Include "*.config" -Recurse |
    Where-Object { $_.DirectoryName -like "*$dirname*" }
Copy-Item -Path $files -Destination $dest

В папку резервного копирования должны копироваться только папки с конфигурационными файлами.

enter image description here

1 Ответ

0 голосов
/ 28 марта 2019

Если я правильно понял вопрос, измените ваш текущий скрипт на:

$sourcePath      = 'D:\Test'
$destinationPath = 'D:\Result'
$excludeFolder   = 'NoConfigFileFolder'

# create the destination folder if this does not yet exist
if (!(Test-Path -Path $destinationPath)) {
    New-Item -Path $destinationPath -ItemType Directory | Out-Null
}
Copy-Item -Path $sourcePath –Filter '*.config' -Destination $destinationPath –Recurse -Exclude "*$excludeFolder*"

должно работать.

Если структура такая:

D:\TEST
|   bla1.config
|   web1.config
|
+---ConfigFileFolder
|       bla.config
|       web.config
|
\---NoConfigFileFolder
        leavethis.config

результирующая папка резервной копии выглядит следующим образом:

D:\RESULT
|   bla1.config
|   web1.config
|
\---ConfigFileFolder
        bla.config
        web.config
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...