PDFtoText Auslesen und umbenennen
Hallo,
ich muss ca. 151 PDF Dateien umbenennen und bräuchte da ein wenig Hilfe.
Ich mache hier folgendes, lese die PDF Datei aus (Suche nach der Kundennummer) und benenne diese dann in die Kundennummer um.
Das ganze funktioniert für eine Datei ohne Probleme, allerdings müsste ich das mit einer for Schleife so umschreiben, das er dieses für alle
151 PDF's ausführt.
Da ich noch relativ neu in der Thematik bin, stehe ich hier leider etwas auf dem Schlauch und auch die Suche hilft mir nicht wirklich weiter.
Das ganze sieht im Moment so aus:
Würde mich sehr freuen, wenn ihr mir hier weiterhelfen könntet.
Beste Grüße
Arbaal
ich muss ca. 151 PDF Dateien umbenennen und bräuchte da ein wenig Hilfe.
Ich mache hier folgendes, lese die PDF Datei aus (Suche nach der Kundennummer) und benenne diese dann in die Kundennummer um.
Das ganze funktioniert für eine Datei ohne Probleme, allerdings müsste ich das mit einer for Schleife so umschreiben, das er dieses für alle
151 PDF's ausführt.
Da ich noch relativ neu in der Thematik bin, stehe ich hier leider etwas auf dem Schlauch und auch die Suche hilft mir nicht wirklich weiter.
Das ganze sieht im Moment so aus:
@echo off
pdftotext.exe -f 1 lizenzschein2018-1Teil6.pdf pdf.txt
set lineNumber=6
set "customerNumber="
set /a LineNumber-=1
for /f "delims=\ tokens=1*" %%a in ('more/e +%lineNumber% ^< pdf.txt') do (
if not defined customerNumber set "customerNumber=%%a"
)
echo %customerNumber:~-5%
ren "lizenzschein2018-1Teil6.pdf" %customerNumber:~-5%.pdf
pause
Würde mich sehr freuen, wenn ihr mir hier weiterhelfen könntet.
Beste Grüße
Arbaal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 358197
Url: https://administrator.de/forum/pdftotext-auslesen-und-umbenennen-358197.html
Ausgedruckt am: 14.05.2025 um 04:05 Uhr
7 Kommentare
Neuester Kommentar
Hallo Arbaal,
nach welchem Muster sollen die PDFs in der Schleife ausgewählt werden? Beginnen sie bspw. alle mit "lizenzschein"? Oder sollen alle ausgeschlossen werden deren Name eine fünfstellige Nummer ist (falls die bereits umbenannten Dateien einen rein numerischen Name haben)?
Weiterhin:
Steffen
nach welchem Muster sollen die PDFs in der Schleife ausgewählt werden? Beginnen sie bspw. alle mit "lizenzschein"? Oder sollen alle ausgeschlossen werden deren Name eine fünfstellige Nummer ist (falls die bereits umbenannten Dateien einen rein numerischen Name haben)?
Weiterhin:
set lineNumber=6
...
set /a LineNumber-=1
... resultiert immer in 5, somit ist diese Berechnung unsinnig. Ist es in jeder Datei garantiert, dass die Nummer in derselben Zeile steht?...
set /a LineNumber-=1
Steffen
Ungetestet:
Ich bin davon ausgegangen dass in %%a nur die Nummer mit ggf. vorangestellten Leerzeichen zu finden ist.
Steffen
@echo off &setlocal DisableDelayedExpansion
for %%i in ("lizenzschein*.pfd") do (
pdftotext.exe -f 1 "%%~i" "pdf.txt"
set "customerNumber="
set "file=%%~i"
for /f "usebackq skip=5 delims=\" %%a in ("pdf.txt") do (
if not defined customerNumber set /a "customerNumber=%%a"
)
setlocal EnableDelayedExpansion
ren "!file!" "!customerNumber!.pdf"
endlocal
)
Steffen
Hmm, dann frage ich mich ernsthaft warum du in deinem Originalcode einen \ als Delimiter gesetzt hast. Ich sehe keinen in deinem Beispieltext. Und da in deinem %%a das erste Token steht, resultiert das zur gesamten Zeile. Das ist natürlich nicht nur die Kundennummer, sondern auch der Text davor.
Ich übernehme jetzt einfach mal deinen Text in eine "pdf.txt", kommentiere im Script mit REM alles aus was nicht gebraucht wird und gebe die Umbenennung nur mit ECHO aus, statt sie auszuführen.Ausgabe:
Ergo: Übernehme die neue FOR /F Schleife (Zeile 7) in meinen alten Code und er sollte laufen.
Steffen
Ich übernehme jetzt einfach mal deinen Text in eine "pdf.txt", kommentiere im Script mit REM alles aus was nicht gebraucht wird und gebe die Umbenennung nur mit ECHO aus, statt sie auszuführen.
@echo off &setlocal DisableDelayedExpansion
REM for %%i in ("lizenzschein*.pfd") do (
REM pdftotext.exe -f 1 "%%~i" "pdf.txt"
set "customerNumber="
set "file=beispielhaft.pdf" &REM set "file=%%~i"
for /f "usebackq skip=5 tokens=2" %%a in ("pdf.txt") do (
if not defined customerNumber set /a "customerNumber=%%a"
)
setlocal EnableDelayedExpansion
ECHO ren "!file!" "!customerNumber!.pdf"
endlocal
REM )
PAUSE
ren "beispielhaft.pdf" "12345.pdf"
Drücken Sie eine beliebige Taste . . .
Steffen