Dateien und Ordner vergleichen

Posted on: 2. Oktober 2018
Dateien und Ordner vergleichen ist eine wichtige Aufgabe und Möglichkeit in PowerSHELL. In diesem Video vergleichen wir zwei Ordner bzw. die enthaltenen Dateien und kopieren sowie die Differenz wie auch die Gleichen in ein jeweils unterschiedliches Verzeichnis. Mit dieser Methode wird allerdings nicht auf den Inhalt der Dateien geachtet. Dies müssten wir in einem weiteren Video anschauen.

Hier der Code aus dem Youtube-Video. Die Vorgehensweise und Bemerkungen findest du direkt als Kommentare (#Grün) im Code. So wird er dir ebenfalls in der PowerSHELL ISE angezeigt werden.
——————————————–
# Zwei Quellverzeichnisse erstellen            
$QuelleA = "C:\Script\QuelleA"            
$QuelleB = "C:\Script\QuelleB"            
            
# Verzeichnis für die Differenz Dateien            
$Differenz = "C:\Script\Differenz"            
            
# Verzeichnis für die Gleichen Dateien            
$Gleiche = "C:\Script\Gleiche"            
            
# Anzahl Dateien die erstellt werden sollen            
$AnzDateien = 50            
            
# Anzahl Dateien die zufällig kopiert werden sollen            
$AnzKopieren = 10            
            
# Allfällig vorhandene Dateien löschen in den Verzeichnissen            
Get-ChildItem $QuelleA,$QuelleB,$Differenz,$Gleiche -File | Remove-Item            
            
# Erstellen der Zufallsdaten in beiden Verzeichnissen            
(0..100) | Get-Random -Count $AnzDateien | foreach {New-Item  ($QuelleA + "\" + (New-Guid) + ".txt") -ItemType File} | Out-Null             
(0..100) | Get-Random -Count $AnzDateien | foreach {New-Item  ($QuelleB + "\" + (New-Guid) + ".txt") -ItemType File} | Out-Null            
            
# Zufällig ausgewählte Dateien ins jeweils andere Verzeichnis kopieren            
Get-Random -InputObject (Get-ChildItem $QuelleA -File) -Count $AnzKopieren | Copy-Item -Destination $QuelleB            
Get-Random -InputObject (Get-ChildItem $QuelleB -File) -Count $AnzKopieren | Copy-Item -Destination $QuelleA            
            
# Vergleichen der Quellen A und B und kopieren der Differenz            
Compare-Object -ReferenceObject (Get-ChildItem $QuelleA -File) -DifferenceObject (Get-ChildItem $QuelleB -File) -PassThru | Copy-Item -Destination $Differenz            
            
# Vergleichen der Quellen A und B und kopieren alle gleichen Dateien            
Compare-Object -ReferenceObject (Get-ChildItem $QuelleA -File) -DifferenceObject (Get-ChildItem $QuelleB -File) -ExcludeDifferent -IncludeEqual -PassThru | Copy-Item -Destination $Gleiche            
            
# Ausgabe der Anzahl Dateien            
Write-Host "Dateien in Quelle A sind $((Get-ChildItem $QuelleA -File).count)" -ForegroundColor Green            
Write-Host "Dateien in Quelle B sind $((Get-ChildItem $QuelleB -File).count)" -ForegroundColor Green            
Write-Host "Dateien in Differenz sind $((Get-ChildItem $Differenz -File).count)" -ForegroundColor Cyan            
Write-Host "Dateien in Gleiche sind $((Get-ChildItem $Gleiche -File).count)" -ForegroundColor Yellow
——————————————–
Solltest du irgendwelche Fragen haben, dann kannst du diese gerne entweder hier im Blog oder direkt unter dem YouTube Video stellen. Ich gebe alles, deine Fragen zeitnahe zu beantworten oder ein entsprechendes Video darüber zu machen.
Gerade die Grundlagen-Videos werde ich nicht mit viel Text ausschmücken. Bei mir ist jeweils jede Code-Zeile direkt im Code Kommentiert (#Grün). Du kannst den Code direkt mit in dein Script kopieren und hast so eine gute Orientierungshilfe, sobald du die Scripts auf deine Bedürfnisse anpasst.

Ich erstelle und veröffentliche sämtliche Videos kostenlos und blende auch keine Werbung ein, dies will ich auch so beibehalten. Da das vermittelte Wissen aber in teuren Kursen erlangt werden kann, ist eine kleine Spende hin und wieder sicher keine schlechte Gegenleistung.