PDF umbenennen, Namen aus TXT an variabler Stelle auslessen sowie Ordnerstruktur aus altem Dateinamen
Hallo zusammen,
ich habe folgendes Problem, ich habe einen Ordner mit ca. 6000 PDF's + 6000 TXT Dateien. Es sind eingescannt Faxe, welche von einem OCR-Programm in durchsuchbare PDF Dateien konvertiert wurden. Außerdem wurde der komplette Inhalt der PDF's unter gleichem Dateinamen noch mal als TXT Datei abgespeichert. Es kommen ca. 150 Dateien täglich dazu.
Jetzt steht in einer der ersten 3 Zeilen der Dateiname in der TXT Datei immer hinter dem Wort "liste" und ist immer 8 Zeichen lang. Teilweise kommt es aber auch noch vor, das eine liste über mehrere Seiten geht, weshalb der Dateinamen dann erweitert werden müsste mit einer fortlaufenden Nummer. Für den Fall das das Wort liste nicht gefunden wird ist es was manuelles, weshalb auch diese erkennbar sein sollten.
Zur Veranschaulichung mal ein kleines Beispiel:
Dateien sind gespeichert nach dem Muster:
C:\Eingang\21.04.2014_0001.pdf
C:\Eingang\21.04.2014_0001.txt
C:\Eingang\21.04.2014_0002.pdf
C:\Eingang\21.04.2014_0002.txt
C:\Eingang\21.04.2014_0003.pdf
C:\Eingang\21.04.2014_0003.txt
C:\Eingang\21.04.2014_0004.pdf
C:\Eingang\21.04.2014_0004.txt
Ergebniss sollte in etwa so ausschauen:
C:\Sortiert\2014\04\21\11111111_1-2.pdf (liste 1 von 2 Seiten)
C:\Sortiert\2014\04\21\11111111_2-2.pdf (liste 2 von 2 Seiten)
C:\Sortiert\2014\04\21\22222222.pdf (liste 1 Seite lang)
C:\Sortiert\2014\04\21\manuell_1-1.pdf (Sort liste nicht gefunden)
Die TXT Dateien können nach dem sortieren gelöscht werden.
Ist so etwas überhaupt lösbar über eine Batchdatei? Gibt es jemanden, der mir hierbei helfen kann?
Vielen Dank.
Gruß
ich habe folgendes Problem, ich habe einen Ordner mit ca. 6000 PDF's + 6000 TXT Dateien. Es sind eingescannt Faxe, welche von einem OCR-Programm in durchsuchbare PDF Dateien konvertiert wurden. Außerdem wurde der komplette Inhalt der PDF's unter gleichem Dateinamen noch mal als TXT Datei abgespeichert. Es kommen ca. 150 Dateien täglich dazu.
Jetzt steht in einer der ersten 3 Zeilen der Dateiname in der TXT Datei immer hinter dem Wort "liste" und ist immer 8 Zeichen lang. Teilweise kommt es aber auch noch vor, das eine liste über mehrere Seiten geht, weshalb der Dateinamen dann erweitert werden müsste mit einer fortlaufenden Nummer. Für den Fall das das Wort liste nicht gefunden wird ist es was manuelles, weshalb auch diese erkennbar sein sollten.
Zur Veranschaulichung mal ein kleines Beispiel:
Dateien sind gespeichert nach dem Muster:
C:\Eingang\21.04.2014_0001.pdf
C:\Eingang\21.04.2014_0001.txt
C:\Eingang\21.04.2014_0002.pdf
C:\Eingang\21.04.2014_0002.txt
C:\Eingang\21.04.2014_0003.pdf
C:\Eingang\21.04.2014_0003.txt
C:\Eingang\21.04.2014_0004.pdf
C:\Eingang\21.04.2014_0004.txt
Ergebniss sollte in etwa so ausschauen:
C:\Sortiert\2014\04\21\11111111_1-2.pdf (liste 1 von 2 Seiten)
C:\Sortiert\2014\04\21\11111111_2-2.pdf (liste 2 von 2 Seiten)
C:\Sortiert\2014\04\21\22222222.pdf (liste 1 Seite lang)
C:\Sortiert\2014\04\21\manuell_1-1.pdf (Sort liste nicht gefunden)
Die TXT Dateien können nach dem sortieren gelöscht werden.
Ist so etwas überhaupt lösbar über eine Batchdatei? Gibt es jemanden, der mir hierbei helfen kann?
Vielen Dank.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 236082
Url: https://administrator.de/forum/pdf-umbenennen-namen-aus-txt-an-variabler-stelle-auslessen-sowie-ordnerstruktur-aus-altem-dateinamen-236082.html
Ausgedruckt am: 15.04.2025 um 21:04 Uhr
6 Kommentare
Neuester Kommentar
Tach,
noch nicht ganz klar:
C:\Sortiert\2014\04\21\11111111_1-2.pdf (liste 1 von 2 Seiten)
C:\Sortiert\2014\04\21\11111111_2-2.pdf (liste 2 von 2 Seiten)
Es gibt doch aber nur eine PDF oder? Zumindest ausgehend von deinem Muster.
Und ich denke schon, dass das lösbar ist. Da wird der Bastla oder so sicher was haben.
Gruß
noch nicht ganz klar:
C:\Sortiert\2014\04\21\11111111_1-2.pdf (liste 1 von 2 Seiten)
C:\Sortiert\2014\04\21\11111111_2-2.pdf (liste 2 von 2 Seiten)
Es gibt doch aber nur eine PDF oder? Zumindest ausgehend von deinem Muster.
Und ich denke schon, dass das lösbar ist. Da wird der Bastla oder so sicher was haben.
Gruß
Hallo s.lamers und willkommen im Forum!
Oberflächlich getestet etwa so:
Da Du die Inhalte der Zeilen mit "liste" nicht näher beschrieben hast, gehe ich davon aus, dass zwischen "liste" und dem 8-stelligen Dateinamen allenfalls eine unbestimmte Anzahl von Leerzeichen, aber kein anderer Text stehen kann.
In den Zeilen 4 und 5 kannst Du den Suchbegriff und die Anzahl der Zeilen ab Dateianfang, in denen dieser Begriff gesucht werden soll, festlegen - lt Deiner Vorgabe sind das "suche" und 3 Zeilen.
Eine Einschränkung gibt es hinsichtlich der Benennung von mehrseitigen Listen: Es wird erst ab der zweiten Seite eine 2-stellige (die Stellenanzahl kannst Du in Zeile 7 mit max 6 festlegen) Seitennummer (ohne Gesamtzahl der Seiten - diese steht ja meines Wissens nicht in der ersten Datei und ist damit vorweg nicht bekannt) hinzugefügt, sodass das Ergebnis für die ersten beiden Dateien Deines Beispiels (mit 2-stelliger Seitennummer) so aussieht:
Auch für Dateien, in denen "liste" nicht gefunden wurde, wird bei Bedarf eine 2-stellige Laufnummer hinzugefügt, sodass also zB
entstünden.
Grüße
bastla
Oberflächlich getestet etwa so:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
@echo off & setlocal
Set "Ein=C:\Eingang"
set "Aus=C:\Sortiert"
set "Such=liste"
set /a ZeilenAnzahl=3
set "Typ=pdf"
set /a Stellen=2
for %%i in ("%Ein%\*.txt") do call :ProcessFile "%%i"
goto :eof
:ProcessFile
for /f "tokens=1-3 delims=._" %%a in ("%~n1") do set "Tag=%%a" & set "Monat=%%b" & set "Jahr=%%c"
set "Ziel=%Aus%\%Jahr%\%Monat%\%Tag%"
md "%Ziel%" 2>nul
set "Zeile=" & set "Name=manuell"
for /f "tokens=1* delims=:" %%a in ('findstr /ni "%Such%" %1') do if %%a leq %ZeilenAnzahl% set "Zeile=%%b"
if not defined Zeile goto :Check
call set "Zeile=%%Zeile:*%Such%=%%"
for /f %%a in ("%Zeile%") do set "Name=%%a"
set "Name=%Name:~,8%"
:Check
set /a Nr=1000001
set "Dateiname=%Name%.%Typ%"
:Loop
if not exist "%Ziel%\%Dateiname%" copy %1 "%Ziel%\%Dateiname%">nul & goto :eof
set /a Nr+=1
call set "Dateiname=%Name%_%%Nr:~-%Stellen%%%.%Typ%"
goto :Loop
In den Zeilen 4 und 5 kannst Du den Suchbegriff und die Anzahl der Zeilen ab Dateianfang, in denen dieser Begriff gesucht werden soll, festlegen - lt Deiner Vorgabe sind das "suche" und 3 Zeilen.
Eine Einschränkung gibt es hinsichtlich der Benennung von mehrseitigen Listen: Es wird erst ab der zweiten Seite eine 2-stellige (die Stellenanzahl kannst Du in Zeile 7 mit max 6 festlegen) Seitennummer (ohne Gesamtzahl der Seiten - diese steht ja meines Wissens nicht in der ersten Datei und ist damit vorweg nicht bekannt) hinzugefügt, sodass das Ergebnis für die ersten beiden Dateien Deines Beispiels (mit 2-stelliger Seitennummer) so aussieht:
C:\Sortiert\2014\04\21\11111111.pdf
C:\Sortiert\2014\04\21\11111111_02.pdf
C:\Sortiert\2014\04\21\manuell.pdf
C:\Sortiert\2014\04\21\manuell_02.pdf
C:\Sortiert\2014\04\21\manuell_03.pdf
Grüße
bastla