Попытка массовой замены файлов из одного каталога в другой, где находится файл. Windows 7

Попытка массовой замены файлов из одного каталога в другой, где находится файл. Windows 7

У меня есть 200+ файлов в одном каталоге, которые мне нужно сначала найти в другом каталоге с подпрограммами и заменить после того, как они будут найдены. Имена файлов одинаковы. Содержимое/размер обычно отличается. В последний раз, когда мне пришлось это сделать, у меня была среда Linux, поэтому я составил команду. Я понятия не имею, как это сделать в Windows.

решение1

Я считаю, что следующий скрипт PowerShell должен справиться с этой задачей. Он, вероятно, далек от оптимального, поскольку он выполняет полный рекурсивный поиск в исходной папке для каждого файла, поэтому вы можете захотеть немного его подправить. Я настоятельно рекомендую сначала протестировать его с некритическими данными и папками. Я провел некоторое тестирование с небольшим набором файлов-образцов, и он работал нормально, но файлы в вашей среде могут быть не такими простыми.

Обратите внимание, что может возникнуть непредвиденное поведение, если искомый файл отсутствует в исходной папке или если в исходной папке находится несколько файлов с тем же именем, что и искомый файл.

$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
    }
}

Связанный контент