Tengo más de 200 archivos en un solo directorio que primero necesito buscar en otro directorio con subs y reemplazarlo una vez que lo encuentre. Los nombres de los archivos son los mismos. El contenido/tamaño suele ser diferente. La última vez que tuve que hacer esto tenía un entorno Linux, así que preparé un comando. No tengo idea de cómo hacer esto en Windows.
Respuesta1
Creo que el siguiente script de PowerShell debería funcionar. Probablemente esté lejos de ser óptimo, ya que realiza una búsqueda recursiva completa de la carpeta de origen para cada archivo, por lo que es posible que desees modificarlo un poco. Recomiendo encarecidamente probarlo primero con carpetas y datos no críticos. Hice algunas pruebas con un pequeño conjunto de archivos de muestra y funcionó bien, pero es posible que los archivos en su entorno no sean tan simples.
Tenga en cuenta que puede haber algún comportamiento inesperado si el archivo que está buscando no existe en la carpeta de origen o si hay varios archivos en la carpeta de origen que tienen el mismo nombre que el que se busca.
$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
}
}