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

Printed on: April 19, 2024 at 19:04 o'clock

Member: rubberman
rubberman Dec 14, 2017 at 13:10:09 (UTC)
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
Member: arbaal
arbaal Dec 14, 2017 updated at 15:24:43 (UTC)
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
Member: rubberman
rubberman Dec 14, 2017 updated at 17:36:28 (UTC)
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
Member: arbaal
arbaal Dec 18, 2017 at 15:29:10 (UTC)
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
Member: rubberman
rubberman Dec 18, 2017 at 17:44:54 (UTC)
Goto Top
Poste doch einfach mal eine dieser Zeilen 6, aber bitte in Code Tags (</> Symbol in der Editor Box).

Steffen
Member: arbaal
arbaal Dec 19, 2017 at 15:17:53 (UTC)
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
Member: rubberman
rubberman Dec 20, 2017 updated at 20:07:44 (UTC)
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