arbaal
Goto Top

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:

@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

Content-Key: 358197

Url: https://administrator.de/contentid/358197

Ausgedruckt am: 19.03.2024 um 09:03 Uhr

Mitglied: rubberman
rubberman 14.12.2017 um 14:10:09 Uhr
Goto Top
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:
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?

Steffen
Mitglied: arbaal
arbaal 14.12.2017 aktualisiert um 16:24:43 Uhr
Goto Top
Hallo Steffen,

entschuldige bitte, das ich es nicht genau erläutert habe.

Der PDF Name beginnt immer "lizenzschein2018-1Teil", es verändert sich nur die Nummer am Ende, aufsteigend von "1Teil1 bis 1Teil151".
Im PDF befindet sich die Kundennummer, in welche die PDF's umbenannt werden sollen.

Der Aufbau der einzelnen PDF Dateien ist immer gleich, die Kundennummer befindet sich immer in der selben Zeile. In diesem Fall nachdem das PDF in txt gewandelt wurde, in der Zeile 6.

Die Kundennummern selber sind immer 6 stellig, bis auf ein oder zwei Ausnahmen, wo diese 7 bzw. 8 stellig ist. Diese könnte man aber auch per Hand ändern.

Grüße

Arbaal
Mitglied: rubberman
rubberman 14.12.2017 aktualisiert um 18:36:28 Uhr
Goto Top
Ungetestet:
@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
)
Ich bin davon ausgegangen dass in %%a nur die Nummer mit ggf. vorangestellten Leerzeichen zu finden ist.

Steffen
Mitglied: arbaal
arbaal 18.12.2017 um 16:29:10 Uhr
Goto Top
Hallo,

vielen Dank schon einmal dafür. Ich bin heute erst wieder in der Firma und konnte es leider vorher noch nicht austesten.


Nach der Ausführung, bekomme ich folgende Meldung:

"Fehlender Operator"
Dateiname existiert bereits, oder die Datei konnte nicht gefunden werden."

Eine txt Datei wird erstellt, eine Umbenennung findet zwar statt, aber nur für das erste pdf Dokument und anstelle der Kundennummer wird eine 0 übergeben.

Ich schaue mir das morgen, wenn ich die Zeit habe noch einmal genauer an. Sollte dir in der Zeit noch etwas dazu einfallen, wäre ich für jede Hilfe dankbar.

Grüße
Mitglied: rubberman
rubberman 18.12.2017 um 18:44:54 Uhr
Goto Top
Poste doch einfach mal eine dieser Zeilen 6, aber bitte in Code Tags (</> Symbol in der Editor Box).

Steffen
Mitglied: arbaal
arbaal 19.12.2017 um 16:17:53 Uhr
Goto Top
Wenn ich dich richtig verstanden habe, wolltest du einen Einblick in die txt Datei.

LIZENZSCHEIN
FIRMA BUSINESS FINANZBUCHHALTUNG 2018
Versionsnummer 11.0x
Ihre Lizenznummer: 90096890-678054-000000-89764
Firma Bezeichnung
Kunden-Nr.: 12345
Version: Version

Entschuldige bitte, wenn es nicht das ist, was du gemeint hattest.

Grüße
Mitglied: rubberman
rubberman 20.12.2017 aktualisiert um 21:07:44 Uhr
Goto Top
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.
@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
Ausgabe:
ren "beispielhaft.pdf" "12345.pdf"  
Drücken Sie eine beliebige Taste . . .
Ergo: Übernehme die neue FOR /F Schleife (Zeile 7) in meinen alten Code und er sollte laufen.

Steffen