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
Please also mark the comments that contributed to the solution of the article
Content-ID: 240710
Url: https://administrator.de/forum/batch-oder-vbs-doppelte-dateinamen-in-einem-verzeichnis-finden-und-loeschen-oder-verschieben-240710.html
Printed on: May 14, 2025 at 02:05 o'clock
6 Comments
Latest comment
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