Robocopy: copia arquivos preservando a estrutura de pastas, mas adicionando uma subpasta

0

Eu preciso copiar uma pasta que contenha subpastas com arquivos para uma pasta compartilhada em outra máquina. Durante esse período, o script deve criar uma subpasta personalizada em cada pasta de destino e colocar arquivos nela.

Espero que este exemplo clarifique a tarefa:

  1. Para a seguinte pasta de origem:

    --Logs
    ----Application
    ------Service
    --------Log1.txt
    --------Log2.txt
    ------WebSite
    --------Log1.txt
    --------Log2.txt
    
  2. A pasta de destino deve ser criada da seguinte maneira:

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

Como você vê nas subpastas de nível inferior Machine1 foram criadas. Você pode fornecer um exemplo de script do PowerShell que pode fazer isso?

Eu investiguei parâmetros de entrada no comando ROBOCOPY . Parece que não me permite fazer isso diretamente.

Também sei que posso simplesmente percorrer toda a estrutura de pastas, criar subpastas obrigatórias e copiar arquivos para cada subpasta, mas parece ser um caminho muito "longo". Então, quero saber se estou perdendo alguma coisa. Talvez exista uma maneira melhor / mais inteligente de fazer isso.

    
por Egor4eg 06.02.2014 / 15:09

1 resposta

0

Esse código rápido e sujo ... ainda continua sendo a pasta ...

$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
    }
}
    
por 06.02.2014 / 16:16