[ANLEITUNG] Doppelte Dateien mit PowerShell finden und löschen
In diesem Artikel erfahren Sie, wie Sie mit PowerShell doppelte Dateien finden und löschen können. Außerdem stellen wir Ihnen ein benutzerfreundlicheres Tool vor, das auf einfache und absolut sichere Weise nach doppelten Dateien sucht und diese entfernt.
Kann ich mit PowerShell doppelten Dateien finden?
Als Befehlszeilenshell und Skriptsprache wurde PowerShell entwickelt, um administrative Aktivitäten zu automatisieren, Systemkonfigurationen zu warten und verschiedene systembezogene Prozeduren effektiv zu handhaben. Es basiert auf dem .NET Framework, wodurch es Zugriff auf eine Vielzahl von Systemfunktionen und -bibliotheken hat und damit ein unverzichtbares Werkzeug für eine breite Palette von Benutzern ist.
Eine der herausragenden Funktionen von PowerShell ist seine Fähigkeit zur Interaktion mit dem Windows-Betriebssystem, Diensten und Anwendungen über Befehle. Diese Befehle sind darauf ausgelegt, einfach zu verwenden zu sein und einer konsistenten Namenskonvention zu folgen, was es leichter macht, sie effektiv zu entdecken und zu nutzen.
Die Vielseitigkeit und Erweiterbarkeit von PowerShell machen es zu einem unschätzbaren Werkzeug, um doppelte Dateien auf einem Windows-PC zu finden und zu entfernen. Sie können Ihr System durchsuchen, doppelte Dateien anhand verschiedener Kriterien wie Inhalt, Name oder Größe finden und sie mit speziellen Befehlen und Skripten sicher löschen, um wertvollen Festplattenspeicher freizugeben.
Wie kann ich mit PowerShell doppelte Dateien finden und löschen?
In diesem Teil werden wir eine schrittweise Anleitung geben, wie Sie PowerShell verwenden können, um doppelte Dateien zu finden und zu entfernen, und das Skript demonstrieren, um dieses Ziel zu erreichen.
Teil 1. Doppelte Dateien finden mit PowerShell
Der Befehl Get-FileHash in PowerShell dient der Datei-Checksumme. Dieser Hash kann verwendet werden, um eine Datei eindeutig zu identifizieren. Wir werden den Hash-Wert nutzen, um in diesem Beitrag doppelte Dateien zu identifizieren. Die Syntax des Befehls lautet wie folgt:
Get-FileHash -Path file_path -Algorithm hashing_algorithm
Sie müssen einen bestimmten Speicherpfad der Dateien eingeben, die Sie durchsuchen möchten. Zum Beispiel:
Get-FileHash -Path 'D:\ISO\WinPE.iso' -Algorithm SHA512
Wenn keine Hashing-Methode angegeben wird, ist der Standardwert SHA256, der in den meisten Fällen ausreichend ist. Der Hash wird zur Überprüfung der Dateiintegrität verwendet, insbesondere beim Herunterladen von Daten aus dem Internet.
Get-FileHash unterstützt die Pipeline-Eingabe, sodass wir es in Verbindung mit dem Befehl Get-ChildItem verwenden können, um den Hash jedes von Get-ChildItem bereitgestellten Elements zu berechnen.
Nun können wir Duplikate mit PowerShell finden.
▶ Option 1. Doppelte Dateien anhand des Hash-Werts finden
Der folgende Befehl ruft rekursiv alle Dateien in einem Ordner ab, gibt sie an Get-FileHash weiter, um ihren Hash zu generieren und gruppiert sie dann anhand übereinstimmender Hash-Werte. Sie müssen den Pfad basierend auf dem Ergebnis des Get-FileHash-Befehls entsprechend Ihrer Situation anpassen.
$srcDir = "D:\MyScripts" (Hier Pfad entsprechend Ihrer Situation ändern)
Get-ChildItem $srcDir -File -Recurse `
| Get-FileHash | Group -Property Hash `
| where {$_.Count -gt 1} | foreach { $_.Group | select Path, Hash}
Beachten Sie, dass dieser Befehl mit kleinen Dateien am besten funktioniert. Wenn das Quellverzeichnis eine große Anzahl großer Dateien zum Löschen enthält, können Schwierigkeiten auftreten.
Die Hash-Berechnung ist ein zeitaufwändiger Vorgang, und das oben genannte Programm führt sie für jede Datei durch, unabhängig von deren Größe. Bei der Verwendung gegen ein Verzeichnis mit einer großen Anzahl von Dateien dauert es eine Ewigkeit, um Duplikate zu finden.
▶ Option 2. Doppelte Dateien anhand von Länge und Hash finden
Im Vergleich zu dem oben genannten Befehl ist die Suche nach doppelten Dateien anhand von Länge und Hash optimierter.
Die Dateien müssen in ihrer Größe übereinstimmen, um Duplikate zu sein, das heißt, Dateien unterschiedlicher Größe können keine Duplikate sein. Sie sind sicherlich vertraut mit der Eigenschaft „Length“ des PowerShell-Befehls Get-ChildItem. Es ist keine Berechnung erforderlich, da der Wert „Length“ aus dem Verzeichnis entnommen wird.
Der Trick besteht darin, Hashes nur für Dateien mit derselben Länge zu berechnen, da wir bereits wissen, dass Dateien unterschiedlicher Länge keine Duplikate sein können. Dadurch wird die Gesamtzeit des Befehls erheblich reduziert. Sie müssen den Pfad basierend auf dem Ergebnis des Get-FileHash-Befehls entsprechend Ihrer Situation anpassen.
$srcDir = "D:\ISO Files" (Hier Pfad entsprechend Ihrer Situation ändern)
Get-ChildItem -Path $srcDir -File -Recurse | Group -Property Length `
| where { $_.Count -gt 1 } | select -ExpandProperty Group | Get-FileHash `
| Group -Property Hash | where { $_.count -gt 1 }| foreach { $_.Group | select Path, Hash }
Sie sehen diesen Befehl, der Dateien gleicher Größe gruppiert und diese Dateien dann an Get-FileHash sendet, um ihren Hash zu bestimmen.
Teil 2. Doppelte Dateien löschen mit PowerShell
Nachdem wir mit PowerShell doppelte Dateien gefunden haben, sollten wir entsprechend damit umgehen. Es ist nicht ratsam, Duplikate sofort zu löschen, während Sie mit wichtigen Dateien arbeiten. Stattdessen können Sie sie in ein anderes Verzeichnis verschieben, wahrscheinlich auf eine separate Festplatte mit ausreichend freiem Speicherplatz.
Mit unserem neuen Befehl ist dies einfach. Geben Sie einfach die Ausgabe der oben genannten Operation an den Befehl Move-Item.
# Define source directory
$srcDir = "D:\ISO Files" (Hier Pfad entsprechend Ihrer Situation ändern)
# Define destination directory
$targetDir = "E:\DuplicateFiles\$(Get-Date -Format 'yyyyMMdd')" (Hier werden diese Zieldateien gespeichert)
# Create destination directory
if(!(Test-Path -PathType Container $targetDir)){ New-Item -ItemType Directory -Path $targetDir | Out-Null }
# Move duplicate files to a different location
Get-ChildItem -Path $srcDir -File -Recurse | group -Property Length | where { $_.Count -gt 1 } `
| select -ExpandProperty Group | Get-FileHash | group -Property Hash `
| where { $_.Count -gt 1 }| foreach { $_.Group | select -Skip 1 } `
| Move-Item -Destination $targetDir -Force -Verbose
Der Punkt, den Sie beachten sollten, ist, dass wir -Skip 1 verwendet haben, um eine Datei im Quellverzeichnis zu belassen und andere Duplikate in das angegebene Zielverzeichnis zu verschieben. Sobald sie verschoben sind, können Sie sie später manuell überprüfen und bei Bedarf entfernen. Wenn Sie mit einem großen Quellverzeichnis mit Millionen von Dateien arbeiten, ist es ratsam, den Parameter -verbose bei Move-Item nicht zu verwenden.
Wenn sich in Ihrem Verzeichnis nur wenige Dateien befinden, möchten Sie möglicherweise manuell auswählen, welche verschoben werden sollen und welche im Quellverzeichnis verbleiben sollen:
# Define source directory
$srcDir = "D:\ISO Files"
# Define destination directory
$targetDir = "E:\DuplicateFiles\$(Get-Date -Format 'yyyyMMdd')"
# Create destination directory
if(!(Test-Path -PathType Container $targetDir)){ New-Item -ItemType Directory -Path $targetDir | Out-Null }
# Manually choose duplicate files to move to target directory
Get-ChildItem -Path $srcDir -File -Recurse | Group -Property Length `
| where { $_.Count -gt 1 } | select -ExpandProperty Group | Get-FileHash `
| Group -Property Hash | where { $_.count -gt 1 } | foreach { $_.Group | select Path, Hash } `
| Out-GridView -Title "Select the file(s) to move to `"$targetDir`" directory." -PassThru `
| Move-Item -Destination $targetDir -Force -Verbose
Wenn Sie Ihre Dateien gesichert haben, können Sie die doppelten Dateien auch direkt mit PowerShell verschieben:
# Define source directory
$srcDir = "D:\ISO Files"
# Permanently delete duplicate files; use with caution
Get-ChildItem -Path $srcDir -File -Recurse | group -Property Length | where { $_.Count -gt 1 } `
| select -ExpandProperty Group | Get-FileHash | group -Property Hash `
| where { $_.Count -gt 1 }| foreach { $_.Group | select -Skip 1 } `
| Remove-Item -Force -Verbose
Alternative zu PowerShell: Doppelte Dateien einfach finden und löschen
Während PowerShell für das Auffinden und Löschen von doppelten Dateien verwendet werden kann, können seine Befehle ziemlich komplex und riskant sein. Ein einziger Fehler während des Vorgangs kann potenziell das Verzeichnis Ihrer Dateien beschädigen.
In solchen Fällen wird ein benutzerfreundlicher Sucher für doppelte Dateien zu einem unverzichtbaren Werkzeug. Hier empfehlen wir die Verwendung von AOMEI Partition Assistant Professional, einem vielseitigen Dienstprogramm für die Verwaltung von Festplatten und Partitionen, das mit allen Windows-PCs kompatibel ist.
Mit der Funktion „Doppelte Dateien finden“ bietet es Benutzern eine schnelle und effiziente Lösung. Es führt Scans durch, um doppelte Dateien (einschließlich Bilder, Videos, Audio, Dokumente und Archive) zu finden und ermöglicht Benutzern die Einrichtung automatisierter Reinigungsprozesse für ihre Geräte, ohne komplexe Befehle verwenden zu müssen.
Schritt 1: Installieren und starten Sie dieses Tool, wählen Sie den Tab Freigeben in der oberen Menüleiste und wählen Sie Doppelte Dateien finden.
Schritt 2: Begrenzen Sie im neuen Fenster den Scanbereich und die Dateitypen. Klicken Sie dann auf Scannen. Wenn Sie Erweiterte Einstellungen wählen, können Sie weitere Details für die Dateien festlegen, wie z.B. die Größe, Vergleichsmethoden, Dateischutz-Einstellungen und Dateidaten. Sobald Sie Ihre Einstellungen abgeschlossen haben, klicken Sie auf Scannen, um den Scan zu starten.
Schritt 3: Während des Scans können Sie die Dateinummern, die verbrauchte Zeit und die verbleibende Zeit sehen. Wenn Sie den Prozess stoppen möchten, können Sie auf Scannen abbrechen klicken.
Schritt 4: Wenn der Scan abgeschlossen ist, können Sie die Ergebnisse sehen. Alle doppelten Dateien werden im Fenster angezeigt, und Sie können die Größe und die Zeit überprüfen, indem Sie auf Vorschau klicken. Klicken Sie auf Intelligent wählen, und das Programm wählt die richtigen Dateien zum Entfernen aus. Sie können auf Einstellungen klicken, um Ihre bevorzugten Einstellungen festzulegen.
Schritt 5: Nachdem Sie die Löschung bestätigt haben, startet das Tool den Entfernungsprozess.
Zusammenfassung
Dieser Artikel zeigt Ihnen, wie Sie mit PowerShell doppelte Dateien finden und löschen können. PowerShell ist zwar ein sehr nützliches Tool für Windows-Benutzer, um Systemeinstellungen zu ändern. Es erfordert jedoch ein hohes Maß an Computerkenntnissen von einem durchschnittlichen Benutzer.
Wir empfehlen Ihnen, AOMEI Partition Assistant Professional zu verwenden, um doppelte Dateien mit nur wenigen Klicks zu finden und zu löschen. Es verfügt außerdem über eine Datenwiederherstellungsfunktion, um Sie für den Fall der Fälle zu schützen. Und es kann Junk-Dateien bereinigen, installierte Apps verschieben, und Sie finden viele nützliche Funktionen zur Verbesserung der Leistung Ihres Computers.