Batch Dateien kopieren, deren Dateiname 8 Stellen lang ist
Hallo zusammen,
Problem: es werden durch verschiedenen Quellen PDF´s generiert, die eigentlich eine Dateinamenslänge von 8 Stellen haben sollten.
Durch fehlerhafte Erkennung etc. kommen auch Dateien vor, die kürzere oder längere Dateinamen haben - die will ich löschen bzw. nur die richtigen kopieren und den Rest dann löschen.
Alle 5 Minuten lasse ich den Ordner nach neuen Dateien durchsuchen - es betrifft also immer eine Wildkart bzw. Schleife.
Also:
12345678.pdf ist gut.
012345678.pdf ist böse.
Ich habe schon viel gesucht und doch keine Batch-Lösung bisher gefunden.
Gruß
Joe
Problem: es werden durch verschiedenen Quellen PDF´s generiert, die eigentlich eine Dateinamenslänge von 8 Stellen haben sollten.
Durch fehlerhafte Erkennung etc. kommen auch Dateien vor, die kürzere oder längere Dateinamen haben - die will ich löschen bzw. nur die richtigen kopieren und den Rest dann löschen.
Alle 5 Minuten lasse ich den Ordner nach neuen Dateien durchsuchen - es betrifft also immer eine Wildkart bzw. Schleife.
Also:
12345678.pdf ist gut.
012345678.pdf ist böse.
Ich habe schon viel gesucht und doch keine Batch-Lösung bisher gefunden.
Gruß
Joe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 370895
Url: https://administrator.de/contentid/370895
Ausgedruckt am: 21.11.2024 um 23:11 Uhr
5 Kommentare
Neuester Kommentar
Batch
Powershell
Gruß m.
@echo off
For /f "delims=" %%a in ('dir /b /s /a-d "c:\Ordner\*.pdf" ^| findstr /iv "\\........\.pdf$" 2^>nul') do del "%%a"
dir "c:\Ordner\*.pdf" -File -Recurse | ?{$_.Basename.length -ne 8} | del -Force
Zitat von @NetzwerkDude:
Hier auch was für Powershell, in der Variante mit RegularExpressions:
der befehlt generiert dir die liste der dateien die exakt 8 beliebige zeichen im namen haben und eine .pdf am schluss
Der Regex hat in diesem Fall einen gravierenden Fehler, wenn dann müsste dieser so aussehen, da ansonsten auch längere Dateien gematcht werden!Hier auch was für Powershell, in der Variante mit RegularExpressions:
gci | ? Name -match '.{8}\.pdf$'
der befehlt generiert dir die liste der dateien die exakt 8 beliebige zeichen im namen haben und eine .pdf am schluss
^.{8}\.pdf$
Gruß m.