Duplikate innerhalb eines Ordners herausfinden trotz unterschiedlicher Dateiendung
Hallo,
ich möchte innerhalb eines Ordners alle Duplikate herausfinden, welche den gleichen Dateinamen haben. Dabei sollen sie aber auch eine unterschiedliche Dateiendung haben können.
Beispiel:
test.txt
test.txt.blub
Kann das jmd z.B. mit einer Batch realisieren?
ich möchte innerhalb eines Ordners alle Duplikate herausfinden, welche den gleichen Dateinamen haben. Dabei sollen sie aber auch eine unterschiedliche Dateiendung haben können.
Beispiel:
test.txt
test.txt.blub
Kann das jmd z.B. mit einer Batch realisieren?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 318953
Url: https://administrator.de/forum/duplikate-innerhalb-eines-ordners-herausfinden-trotz-unterschiedlicher-dateiendung-318953.html
Ausgedruckt am: 29.04.2025 um 13:04 Uhr
8 Kommentare
Neuester Kommentar

Powershell -Executionpolicy ByPass -Command "gci 'c:\Ordner' -Recurse | ?{!$_.PSIsContainer} | group Basename | ?{$_.Count -gt 1} | %%{$_.Group}"

Wenn ich es mit PowerShell ausführe bekomme ich folgende Meldung:
Falsch! Das war für die Verwendung innerhalb einer Batchdatei (nicht in der Konsole testen, sondern einer Batchdatei, da Prozentzeichen verdoppelt sind.) gedacht, so wie du es wolltest!Willst du reines Powershell sieht das so aus
gci 'c:\Ordner' -Recurse | ?{!$_.PSIsContainer} | group Basename | ?{$_.Count -gt 1} | %{$_.Group}

test.txt und test.txt.blub jedoch nicht.
Logisch weil der Basename bei test.txt.blub ja test.txt ist und die Extension *.blub Wenn deine Intention Ransomware ist solltest du dir diesen Thread hier anschauen:
Erpresser Prävention
Bekommt man das auch noch hin?
Kann man wenn man davon ausgeht das keine weiteren Punkte im Dateinamen von Anfang an her, vorkommen.Ah ok. Mit Batch ist es besser, da beim Verwendungsort nicht unbedingt Powershell verfügbar ist.
Wieder falsch. Hier wird Powershell aus einer Batch aufgerufen, es ist also trotzdem erforderlich.
Powershell -Executionpolicy ByPass -Command "gci -Recurse | ?{!$_.PSIsContainer} | group {[regex]::match($_.Name,'(?i)^([^\.]+)(\.[^\.]*\.[^\.]*)?').Groups[1].Value) } | ?{$_.Count -gt 1} | %%{$_.Group}"
Hey,
Batch code (funktioniert nicht bei Dateien mit Leerzeichen im Dateinamen):
Aufrufparameter ist der zu durchsuchende Ordner.
Gruß, Endoro
Batch code (funktioniert nicht bei Dateien mit Leerzeichen im Dateinamen):
@echo off & setlocal
if not "%~1"=="" cd "%~1"
for /f "delims==" %%a in ('set . 2^>nul') do set "%%~a="
for /f "delims=." %%a in ('dir /b/a-d') do set /a .%%~a+=1
for /f "tokens=1*delims==." %%a in ('set . 2^>nul') do if %%~b neq 1 dir /b/a-d "%%~a*"
Aufrufparameter ist der zu durchsuchende Ordner.
Gruß, Endoro