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