Per Skript nach Datei-Duplikaten scannen (Powershell)
Hallo zusammen,
ich hatte die Anfrage vor einigen Wochen/Monaten schonmal gestellt, dort kam ich allerdings nicht so richtig weiter.
Daher bitte ich an dieser Stelle nochmal um eure Hilfe.
Folgendes Szenario.
Im Ordner C:\Daten\ sind ca. 100 Ordner. Darunter auch der Unterordner "ORIGINAL".
Im Ordner "ORIGINAL" sind wichtige Dokumente, die immer auf dem aktuellen Stand gehalten werden müssen. Daher ist nicht gewünscht, dass es vom Inhalt des Ordners Dupliakte innerhalb von C:\Daten gibt.
Ich würde gerne ein Skript erstellen, welches dies prüft und das Ergebnis in eine Text- oder CSV-Datei schreibt.
Kurze Zusammenfassung der Anforderungen:
Schritt 1: Alle Dateien in C:\Daten\ORIGINAL erfassen
Schritt 2: In C:\Daten (inkl. allen Unterordnern außer ORIGINAL) nach Duplikaten der aus in Schritt 1 gefundenen Dateien suchen
Schritt 3: Ergebnis in Datei schreiben und abspeichern
Vielen lieben Dank im Voraus!
LG Philzip
ich hatte die Anfrage vor einigen Wochen/Monaten schonmal gestellt, dort kam ich allerdings nicht so richtig weiter.
Daher bitte ich an dieser Stelle nochmal um eure Hilfe.
Folgendes Szenario.
Im Ordner C:\Daten\ sind ca. 100 Ordner. Darunter auch der Unterordner "ORIGINAL".
Im Ordner "ORIGINAL" sind wichtige Dokumente, die immer auf dem aktuellen Stand gehalten werden müssen. Daher ist nicht gewünscht, dass es vom Inhalt des Ordners Dupliakte innerhalb von C:\Daten gibt.
Ich würde gerne ein Skript erstellen, welches dies prüft und das Ergebnis in eine Text- oder CSV-Datei schreibt.
Kurze Zusammenfassung der Anforderungen:
Schritt 1: Alle Dateien in C:\Daten\ORIGINAL erfassen
Schritt 2: In C:\Daten (inkl. allen Unterordnern außer ORIGINAL) nach Duplikaten der aus in Schritt 1 gefundenen Dateien suchen
Schritt 3: Ergebnis in Datei schreiben und abspeichern
Vielen lieben Dank im Voraus!
LG Philzip
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 289967
Url: https://administrator.de/contentid/289967
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
17 Kommentare
Neuester Kommentar
Servus Philzip,
Punkt 1 und 2 nach 1 Minute (der 2te Link von oben):
http://lmgtfy.com/?q=powershell+duplicate+files
Punkt 3:
Was willst du genau als Ergebnis schreiben/abspeichern??
Gruß
Punkt 1 und 2 nach 1 Minute (der 2te Link von oben):
http://lmgtfy.com/?q=powershell+duplicate+files
Punkt 3:
Was willst du genau als Ergebnis schreiben/abspeichern??
Gruß
Moin,
Edit: Überarbeitet
clear-host
$path = "C:\test"
$original = gci "$path\Original"
$original | out-file $path\Report\originfiles.txt -Append
foreach($o in $original){
$search = Test-Path $path\$o
if ($search-eq $true){
"$o wurde in $path gefunden" | Out-File $path\Report\Duplikates.txt -Append
}
}
Edit: Überarbeitet
Hallo zusammen,
Möchtest du zusätzlich den Inhalt also den Hash der Files vergleichen, dann habe ich hier schon mal ein Skript gepostet das sowas macht.
Dupes mit anderem Dateinamen finden und in "HardLinks" umwandeln (W2k12R2, NTFS)
Grüße Uwe
-edit- kleine Korrektur
Na die Liste der gefundenen Duplikate
das Wort Duplikat kann vielfältig sein und ist so ohne Definition ziemlich schwammig, denn jeder kann darunter etwas anderes definieren. Wenn du mit Duplikaten meinst das Dateiname, Änderungsdatum und Größe übereinstimmen sollen, dann kannst du du das folgendermaßen machen:# Root Ordner
$root = 'C:\Daten'
# Ordner der die Referenzdateien enthält
$referencefolder = 'C:\Daten\ORIGINAL'
# Referenzdateien speichern
$reference = gci $referencefolder -Recurse | ?{!$_.PSISContainer}
# alle anderen Files außer dem Originalordner speichern
$other = gci $root -Recurse | ?{!$_.PSISContainer -and $_.Directory.FullName -notlike "$referencefolder*"}
# Vergleiche und schreibe nur Dateien welche in Name, Änderungsdatum und Größe übereinstimmen in eine Datei
compare $other $reference -Property Name,LastWriteTime,Length-PassThru -IncludeEqual -ExcludeDifferent | select -Expand Fullname | out-file 'C:\duplicates.txt'
Dupes mit anderem Dateinamen finden und in "HardLinks" umwandeln (W2k12R2, NTFS)
Grüße Uwe
-edit- kleine Korrektur
Wenn das ausreicht ändere die letzte Zeile so ab, dann wird nur der Name als Vergleich herangezogen.
compare $other $reference -Property Name -PassThru -IncludeEqual -ExcludeDifferent | select -Expand Fullname | out-file 'C:\duplicates.txt'
Zitat von @Philzip:
In der Duplicates.txt werden mir auch Dateien angezeigt, die in c:\Daten\Original\Unterordner liegen. Als Referenzdaten sollen allerdings alle Daten in Original INKL allen Unterordnern von Original genommen werden. Ist das machbar?
kein Problem, ist angepasst ...In der Duplicates.txt werden mir auch Dateien angezeigt, die in c:\Daten\Original\Unterordner liegen. Als Referenzdaten sollen allerdings alle Daten in Original INKL allen Unterordnern von Original genommen werden. Ist das machbar?
Code von oben richtig kopieren, dann klappts !