Batch oder VBS - Doppelte Dateinamen in einem Verzeichnis finden und löschen oder verschieben
Hallo,
ich habe ein dringendes Problem.
Durch einen Softwarefehler wurden mir in einem Verzeichnis sehr viele doppelte Dateinamen erzeugt (ca. 15.000 Dateien).
Von diesen Dateien sollen die Dubletten gelöscht werden.
Ideal wäre wahrscheinlich der bitweise Vergleich.
Ansonsten sind generell die ersten 16 Stellen des Dateinamens identisch, danach unterscheiden sie sich (Zeitstempel der Erzeugung).
Ich muss möglichst schnell die Dupletten entfernen, damit ich die restlichen Dateien weiterverarbeiten kann!
Vielen dank im Voraus!
Gruß
Torsten
ich habe ein dringendes Problem.
Durch einen Softwarefehler wurden mir in einem Verzeichnis sehr viele doppelte Dateinamen erzeugt (ca. 15.000 Dateien).
Von diesen Dateien sollen die Dubletten gelöscht werden.
Ideal wäre wahrscheinlich der bitweise Vergleich.
Ansonsten sind generell die ersten 16 Stellen des Dateinamens identisch, danach unterscheiden sie sich (Zeitstempel der Erzeugung).
Ich muss möglichst schnell die Dupletten entfernen, damit ich die restlichen Dateien weiterverarbeiten kann!
Vielen dank im Voraus!
Gruß
Torsten
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 240710
Url: https://administrator.de/contentid/240710
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
6 Kommentare
Neuester Kommentar
Hilft Dir das Erstellungsdatum der Dateien vielleicht auch weiter?
Schau mal hier:
http://blog.waltritscher.com/index.php/2009/08/30/powershell-find-files ...
Poste doch zusätzlich bitte einen Originalen Dateinamen sowie einen von einer Dublette.
Evtl. sollte man nicht die ersten 16 Zeichen filtern sondern die letzten.
Schau mal hier:
http://blog.waltritscher.com/index.php/2009/08/30/powershell-find-files ...
Poste doch zusätzlich bitte einen Originalen Dateinamen sowie einen von einer Dublette.
Evtl. sollte man nicht die ersten 16 Zeichen filtern sondern die letzten.
Hi Thorsten,
wenn Powershell nichts ausmacht, probiers mal hiermit:
Bitte bei dir an einem Testordner vorher testen.
Grüße Uwe
wenn Powershell nichts ausmacht, probiers mal hiermit:
$folder = "C:\test"
$files = dir $folder -Recurse | ?{!$PSIsContainer -and $_.BaseName.Length -ge 16}
$dupes = @()
foreach($file in $files){
$check = dir "$($file.Directory)\$($file.BaseName.Substring(0,16))*" -ErrorAction SilentlyContinue | sort -Property LastWriteTime
if ($check.Count -gt 1){
foreach($f in $check[1..($check.Length)]){
if ($dupes -notcontains $f.FullName){
$dupes += $f.FullName
}
}
}
}
$dupes | %{write-host "Lösche Dublette: '$_'" -ForegroundColor Green; remove-item $_ -Force}
Grüße Uwe