Ich habe über 200 Dateien in einem einzigen Verzeichnis, die ich zuerst in einem anderen Verzeichnis mit Unterverzeichnissen suchen und ersetzen muss, nachdem sie gefunden wurden. Die Dateinamen sind gleich. Inhalt/Größe sind normalerweise unterschiedlich. Als ich dies das letzte Mal tun musste, hatte ich eine Linux-Umgebung, also habe ich einen Befehl zusammengestellt. Ich habe keine Ahnung, wie das in Windows geht.
Antwort1
Ich glaube, das folgende PowerShell-Skript sollte funktionieren. Es ist wahrscheinlich alles andere als optimal, da es eine vollständige rekursive Suche im Ursprungsordner für jede Datei durchführt. Sie sollten es also vielleicht ein wenig optimieren. Ich empfehle dringend, es zuerst mit nicht kritischen Daten und Ordnern zu testen. Ich habe einige Tests mit einer kleinen Anzahl von Beispieldateien durchgeführt und es lief einwandfrei, aber die Dateien in Ihrer Umgebung sind möglicherweise nicht so einfach.
Beachten Sie, dass es zu unerwartetem Verhalten kommen kann, wenn eine gesuchte Datei nicht im Ursprungsordner vorhanden ist oder wenn sich im Ursprungsordner mehrere Dateien mit demselben Namen wie die gesuchte Datei befinden.
$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
}
}