копировать элемент рекурсивно, но исключить все подпапки - PullRequest
0 голосов
/ 04 мая 2020

Я использую CSV-файл для управления копированием многих каталогов и файлов. Я создал свой пример из этого аналогичного вопроса . Кроме того, я хочу выборочно включить рекурсию. В некоторых строках я хочу копировать файлы только в исходный каталог ( 0 ) и игнорировать вложенные папки внутри. Остальные, я хочу скопировать все ( 1 ). По сути, вопрос в том, как мне выполнить Copy-Item для только файлов внутри данного каталога. Многие ответы здесь относятся к исключению указанных c папок.

CSV-файл

Попытка 1

Import-CSV C:\Users\XXX\Desktop\test1.csv | foreach{
    If ($_.Recurse -eq 1){
        Copy-item  -Path $_.Source -Destination $_.Destination -Recurse
    } Else {
        Get-ChildItem -Path $_.Source -Recurse -File | 
            Where-Object{ $_.PSIsContainer -eq $False } | 
            ForEach-Object {
                $_ | Copy-Item -Destination $_.Destination -Force
            }
    }
}

Похоже, что с нерекурсивными элементами ничего не происходит

Попытка 2

Import-CSV C:\Users\XXX\Desktop\test1.csv | foreach{
    If ($_.Recurse -eq 1){
        Copy-item -Path $_.Source -Destination $_.Destination -Recurse -Force
    } Else {
        Get-ChildItem -Path $_.Source -Recurse -Depth 0 | Copy-Item -Destination $_.Destination
    }
}

Не работает, и рекурсивные папки копируются как файлы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...