Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Batch oder VBS - Doppelte Dateinamen in einem Verzeichnis finden und löschen oder verschieben

Frage Entwicklung Batch & Shell

Mitglied: goodbytes

goodbytes (Level 2) - Jetzt verbinden

12.06.2014 um 11:36 Uhr, 1723 Aufrufe, 6 Kommentare, 1 Danke

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
Mitglied: emeriks
12.06.2014 um 11:46 Uhr
Hi,
was sind denn hier "Dupletten"? Du willst immer nur eine Datei von jeder Gruppe mit gleichen ersten 16 Stellen erhalten? Und welche? Die älteste, die jüngste, oder was?
E.
Bitte warten ..
Mitglied: goodbytes
12.06.2014 um 11:49 Uhr
Ja genau. Die Dateien sind wirklich identisch und beim Dateiname die ersten 16 Stellen immer gleich. Welche ich nehme ist eigentlich egal. Am besten einfach die erste erstellte Datei.

Gruß
Torsten
Bitte warten ..
Mitglied: Knorkator
12.06.2014, aktualisiert um 12:34 Uhr
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.
Bitte warten ..
Mitglied: colinardo
LÖSUNG 12.06.2014, aktualisiert um 15:30 Uhr
Hi Thorsten,
wenn Powershell nichts ausmacht, probiers mal hiermit:
01.
$folder = "C:\test" 
02.
$files = dir $folder -Recurse |  ?{!$PSIsContainer -and $_.BaseName.Length -ge 16} 
03.
$dupes = @() 
04.
foreach($file in $files){ 
05.
    $check = dir "$($file.Directory)\$($file.BaseName.Substring(0,16))*" -ErrorAction SilentlyContinue | sort -Property LastWriteTime 
06.
    if ($check.Count -gt 1){ 
07.
        foreach($f in $check[1..($check.Length)]){ 
08.
            if ($dupes -notcontains $f.FullName){ 
09.
                $dupes += $f.FullName 
10.
11.
12.
13.
14.
$dupes | %{write-host "Lösche Dublette: '$_'" -ForegroundColor Green; remove-item $_ -Force}
Bitte bei dir an einem Testordner vorher testen.

Grüße Uwe
Bitte warten ..
Mitglied: Tommy70
12.06.2014 um 13:11 Uhr
Hallo,

dafür gibt es auch schon fertige Freeware Tools wie zum Beispiel DoubleKiller

Tom
Bitte warten ..
Mitglied: goodbytes
12.06.2014 um 15:59 Uhr
Hallo Uwe,
funktioniert perfekt, vielen Dank !!!

@Tommy70
Vielen Dank aber das Toll bringt mich da leider nicht weiter. Es handelt sich im Ergebnis um knapp 200 übrig gebliebene Dateien, aus denen sind durch den Fehler rund 15.000 Dateien entstanden. Ich hätte somit knapp 200 Filter "DieErsten16Stellen*" anlegen müssen...

Also, vielen Dank an Alle !!!

Gruß
Torsten
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
VBS oder Batch um eine Datei in Unterordner zu verschieben (1)

Frage von MrRoyal zum Thema VB for Applications ...

Batch & Shell
Batch: .rar-Pakete automatisch Ordner erstellen und verschieben (2)

Frage von BowserMD zum Thema Batch & Shell ...

Entwicklung
gelöst Mit Batch,VBS,Powershell Windows einrichten (1)

Frage von Justin98 zum Thema Entwicklung ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...