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

0

Eu tenho mais de 200 arquivos em um único diretório que eu preciso pesquisar primeiro em outro diretório com subs e substituir depois que ele for 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.

    
por tnik 29.07.2014 / 21:07

1 resposta

0

Acredito que o seguinte script do PowerShell deve fazer o trabalho. É provavelmente longe de ser o ideal, já que ele está fazendo uma busca recursiva completa da pasta de origem para cada arquivo, então você pode querer tentar refazê-lo um pouco. Eu sugiro strongmente testá-lo com dados e pastas não críticos primeiro. Fiz alguns testes com um pequeno conjunto de arquivos de amostra e ele correu bem, mas os arquivos em 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 que o 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
    }
}
    
por 29.07.2014 / 22:54