У меня есть 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
}
}