Я использую 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
}
}
Не работает, и рекурсивные папки копируются как файлы