Wie man Ordner in PowerShell vergleicht

Wie man Ordner in PowerShell vergleicht

Dieses Tutorial zeigt, wie man zwei Ordner mit PowerShell vergleicht.

PowerShell Ordner vergleichen

Das Vergleichen von zwei Ordnern in PowerShell ist ein einfacher Schritt-für-Schritt-Prozess. Wir können die Methode Compare-Object von PowerShell verwenden, um den Inhalt der gegebenen Ordner zu vergleichen.

Siehe den schrittweisen Prozess für die gegebenen beiden Ordner:

Ordner 1

Ordner 2

Den Inhalt der Ordner abrufen

Der erste Schritt besteht darin, den Inhalt des angegebenen Ordners abzurufen. Zunächst führen Sie die folgenden Befehle aus, um die Kinder der Ordner zu erhalten:

 powershellCopy$SourceFolder = Get-ChildItem -Path C:\Users\Sheeraz\DemoFolder1
$DestinationFolder = Get-ChildItem -Path C:\Users\Sheeraz\DemoFolder2

Der obige Befehl wird den Inhalt des Ordners abrufen. Um den Inhalt anzuzeigen, rufen Sie die deklarierte Variable auf:

 powershellCopy$SourceFolder

Die Ausgabe für den Inhalt des Quellordners lautet:

 textCopy    Directory: C:\Users\Sheeraz\DemoFolder1


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          9/9/2022  12:38 PM            399 Delftstack.java
-a----         8/30/2022   2:45 PM             51 delftstack.rtf
-a----         11/1/2022  12:55 PM         127286 demo.bmp
-a----         7/27/2022   4:15 PM            318 Example1.java
 powershellCopy$DestinationFolder

Die Ausgabe für den Inhalt des Zielordners lautet:

 textCopy    Directory: C:\Users\Sheeraz\DemoFolder2


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----         9/20/2022   5:16 PM             68 composer.json
-a----         9/20/2022   5:16 PM           4774 composer.lock
-a----         9/20/2022   4:11 PM        2801573 composer.phar
-a----         8/30/2022   2:45 PM             51 delftstack - Copy.rtf
-a----          9/9/2022  12:38 PM            399 Delftstack.java
-a----         8/30/2022   2:45 PM             51 delftstack.rtf
-a----         11/1/2022  12:55 PM         127286 demo - Copy.bmp
-a----         11/1/2022  12:55 PM         127286 demo.bmp
-a----         7/27/2022   4:15 PM            318 Example1.java

Die Anzahl der Dateien und die Größe der gegebenen Ordner berechnen

Dies ist ein optionaler Schritt, bei dem wir die Anzahl der Dateien mit bestimmten Erweiterungen in jedem Ordner zählen und die Größe jedes Ordners berechnen. Führen Sie die folgenden Befehle aus.

Zählen Sie die Anzahl der Dateien mit einer bestimmten Erweiterung in jedem Ordner:

 powershellCopy($DestinationFolder | where { $_.Extension -eq '.java' }).count

Der obige Befehl zählt die Anzahl der Dateien mit der Erweiterung .java im Zielordner. Die Ausgabe, die wir für unseren Ordner erhalten werden, beträgt 2.

Ähnlich im Quellordner:

 powershellCopy($SourceFolder | where { $_.Extension -eq '.java' }).count

Der obige Befehl zählt die Dateien im Quellordner mit der Erweiterung .java. Die Ausgabe, die wir für unseren Ordner erhalten werden, beträgt 2.

Um die Größe des angegebenen Ordners zu berechnen, führen Sie die folgenden Befehle aus:

 powershellCopy($DestinationFolder | Measure-Object -Property length -Sum).Sum
($SourceFolder | Measure-Object -Property length -Sum).Sum

Die obigen Befehle berechnen die Größe jedes angegebenen Ordners. Die Ausgabe für unsere Ordner ist wie folgt:

 textCopy3061806
128054

Vergleiche die gegebenen Ordner nach Namen

Zuerst vergleichen wir die Ordner nach ihrem Inhaltsnamen, was den Inhalt in den Dateien nicht vergleicht. Siehe den Befehl:

 powershellCopyCompare-Object -ReferenceObject $SourceFolder.Name -DifferenceObject $DestinationFolder.Name

Der obige Befehl vergleicht den Ordnerinhalt nach ihren Namen und zeigt die unterschiedlichen Dateien in beiden Ordnern an. Siehe die Ausgabe:

 textCopyInputObject           SideIndicator
-----------           -------------
composer.json         =>
composer.lock         =>
composer.phar         =>
delftstack - Copy.rtf =>
demo - Copy.bmp       =>

Es zeigt, dass diese fünf Dateien im Quellordner nach Namen unterschiedlich sind.

Vergleiche die gegebenen Ordner nach Dateiinhalt

Im letzten Schritt vergleichen wir den Ordner nach dem Inhalt in ihren Dateien. Um diese Operation auszuführen, müssen wir zunächst die Dateien in den Ordnern in hash umwandeln.

Der hash-Befehl ist einfach zu verwenden. Zum Beispiel:

 powershellCopyGet-FileHash 'Delftstack.java'

Der obige Befehl wird den hash für die Datei Delftstack.java abrufen. Siehe die Ausgabe:

 textCopyAlgorithm       Hash                                                                   Path
---------       ----                                                                   ----
SHA256          FACF7DD67442E2EF84460669E007DA40D17D82E4448D9DBC7E575D25D6012D30       C:\Users\Sheeraz\Delftstack.java

Um den hash für jede Datei im Ordner zu erhalten, müssen wir die foreach-Schleife ausführen. Siehe die Befehle:

 powershellCopy$SourceFolder = Get-ChildItem -Path C:\Users\Sheeraz\DemoFolder1 | foreach { Get-FileHash -Path $_.FullName }
$DestinationFolder = Get-ChildItem -Path C:\Users\Sheeraz\DemoFolder2 | foreach { Get-FileHash -Path $_.FullName }

Die obigen Befehle holen den hash für jede Datei in beiden Ordnern. Um sie anzuzeigen, müssen wir die folgenden Befehle ausführen:

 powershellCopy$DestinationFolder.Hash
$SourceFolder.Hash

Die Ausgabe für den Zielordner lautet:

 textCopyBBBFED20764B6B3FAE56DF485778F5F27918B63008B0EBCAF1342CA8ADC3EADF
23D197F445E3264BF230128A7AFB9BF0E65209249D51C4AD70F51F44DF2D83C5
8FE98A01050C92CC6812B8EAD3BD5B6E0BCDC575CE7A93B242BDE497A31D7732
3D543438B2036F4AFF2CBCD9527FDB00CB249CF6D4D01E3FC2E5DA1C693EC76C
FACF7DD67442E2EF84460669E007DA40D17D82E4448D9DBC7E575D25D6012D30
3D543438B2036F4AFF2CBCD9527FDB00CB249CF6D4D01E3FC2E5DA1C693EC76C
DE35F58F1AF9A75902844BA13D5821EB99957B79555330EFF8C9F974C2481932
DE35F58F1AF9A75902844BA13D5821EB99957B79555330EFF8C9F974C2481932
CCCDDAFD5EDB60F6CDB4E20CFE9FEBE74AB15D28AD0E465B56D23247F33B3315

Die Ausgabe für den Quellordner lautet:

 textCopyFACF7DD67442E2EF84460669E007DA40D17D82E4448D9DBC7E575D25D6012D30
3D543438B2036F4AFF2CBCD9527FDB00CB249CF6D4D01E3FC2E5DA1C693EC76C
DE35F58F1AF9A75902844BA13D5821EB99957B79555330EFF8C9F974C2481932
CCCDDAFD5EDB60F6CDB4E20CFE9FEBE74AB15D28AD0E465B56D23247F33B3315

Jetzt können wir den Inhalt beider Ordner nach ihrem hash-Wert vergleichen. Siehe den Befehl:

 powershellCopyCompare-Object -ReferenceObject $SourceFolder.Hash  -DifferenceObject $DestinationFolder.Hash

Der obige Befehl vergleicht den Inhalt der beiden Ordner nach ihrem hash und gibt den hash für unterschiedliche Inhalte aus. Siehe die Ausgabe:

 textCopyInputObject                                                      SideIndicator
-----------                                                      -------------
BBBFED20764B6B3FAE56DF485778F5F27918B63008B0EBCAF1342CA8ADC3EADF =>
23D197F445E3264BF230128A7AFB9BF0E65209249D51C4AD70F51F44DF2D83C5 =>
8FE98A01050C92CC6812B8EAD3BD5B6E0BCDC575CE7A93B242BDE497A31D7732 =>
3D543438B2036F4AFF2CBCD9527FDB00CB249CF6D4D01E3FC2E5DA1C693EC76C =>
DE35F58F1AF9A75902844BA13D5821EB99957B79555330EFF8C9F974C2481932 =>

Da wir nicht sehen können, welche Datei unterschiedlichen Inhalt hat, um den Namen der Dateien anzuzeigen, führen Sie den folgenden Befehl aus:

 powershellCopy(Compare-Object -ReferenceObject $SourceFolder -DifferenceObject $DestinationFolder  -Property hash -PassThru).Path

Der obige Befehl zeigt den vollständigen Pfad zu den Dateien an, die unterschiedlichen Inhalt in beiden Ordnern enthalten. Siehe die Ausgabe:

 textCopyC:\Users\Sheeraz\DemoFolder2\composer.json
C:\Users\Sheeraz\DemoFolder2\composer.lock
C:\Users\Sheeraz\DemoFolder2\composer.phar
C:\Users\Sheeraz\DemoFolder2\delftstack.rtf
C:\Users\Sheeraz\DemoFolder2\demo.bmp
Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

Verwandter Artikel - PowerShell Folder