Tentando substituir arquivos em massa de um diretório para onde o arquivo é encontrado em outro. Janelas 7

Tentando substituir arquivos em massa de um diretório para onde o arquivo é encontrado em outro. Janelas 7

Tenho mais de 200 arquivos em um único diretório que preciso primeiro procurar em outro diretório com subs e substituir depois de encontrado. Os nomes dos arquivos são os mesmos. O conteúdo/tamanho geralmente é diferente. A última vez que tive que fazer isso eu tinha um ambiente Linux, então montei um comando. Não tenho ideia de como fazer isso no Windows.

Responder1

Acredito que o seguinte script do PowerShell deve resolver o problema. Provavelmente está longe de ser o ideal, já que está fazendo uma pesquisa recursiva completa na pasta de origem de cada arquivo, então você pode querer ajustá-lo um pouco. Eu sugiro fortemente testá-lo primeiro com dados e pastas não críticos. Fiz alguns testes com um pequeno conjunto de arquivos de amostra e funcionou bem, mas os arquivos no seu ambiente podem não ser tão simples.

Observe que pode haver algum comportamento inesperado se um arquivo que você está procurando não existir na pasta de origem ou se houver vários arquivos na pasta de origem que tenham o mesmo nome daquele que está sendo procurado.

$DestDIR = 'C:\Destination'
$OrigDIR = 'C:\Origin'

Get-ChildItem $OrigDir | ForEach-Object {
    $OrigName = $_.Name
    $OrigPath = $_.FullName

    Get-ChildItem $DestDIR -Recurse | Where-Object {$_.Name -eq $OrigName} | ForEach-Object {
        $DestPath = $_.FullName
        Copy-Item $OrigPath $DestPath -Force
    }
}

informação relacionada