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

1 ответ1

0

Я считаю, что следующий скрипт 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
    }
}

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