Мне нужно скопировать папку, содержащую подпапки с файлами, в общую папку на другом компьютере. Во время этого сценарий должен создать собственную подпапку в каждой папке назначения и поместить туда файлы.

Я надеюсь, что этот пример проясняет задачу:

  1. Для следующей исходной папки:

    --Logs
    ----Application
    ------Service
    --------Log1.txt
    --------Log2.txt
    ------WebSite
    --------Log1.txt
    --------Log2.txt
    
  2. Папка назначения должна быть создана следующим образом:

    --Logs
    ----Application
    ------Service
    --------Machine1
    ----------Log1.txt
    ----------Log2.txt
    ------WebSite
    --------Machine1
    ----------Log1.txt
    ----------Log2.txt
    

Как вы видите на нижнем уровне подпапки Machine1 были созданы. Можете ли вы привести пример сценария PowerShell, который может это сделать?

Я исследовал входные параметры в команде ROBOCOPY . Кажется, это не позволяет мне сделать это прямо.

Также я знаю, что могу просто перебирать всю структуру папок, создавать необходимые подпапки и копировать файлы в каждую подпапку, но это кажется слишком «длинным» способом. Итак, я хочу знать, что я что-то упускаю. Может быть, есть лучший / умный способ сделать это.

1 ответ1

0

Сделал этот быстрый и грязный код ... все еще итерации, хотя папка, хотя ...

$orgLoc = "test"
$desLoc = "dest"

Copy-Item -Path $orgLoc -Destination $desLoc -Recurse
$stuff = Get-ChildItem -Path $desLoc -Recurse
foreach($thing in $stuff){
    if($thing.Extension -eq ".txt"){
        $newDir = $thing.DirectoryName + "\Machine1"
        if(!(Test-Path $newDir)){
            New-Item -Path $newDir -ItemType Directory
        }
        Move-Item -Path $thing.FullName -Destination $newDir
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .