Skript zum umbennen von PDF´s

Sascha123145

Cadet 3rd Year
Registriert
Feb. 2017
Beiträge
36
Hallo,

ich hoffe man kann mir hier weiterhelfen, kenne mich null im Skriptschreiben aus.

Ich brauche ein Skript welches mir eine PDF umbenennt und zwar in den folgenden Namen der in Zeile 10 der PDF steht. Dort steht:
Artikelnummer: 123456<-- so soll dann die PDF heißen was dort in der PDF steht, denn diese Nummer ändert sich immer wieder.
 
Das schwierige ist das es PDF Dateien sind. Du kannst aber versuchen sie mit pdf2txt aus den pdftools in eine textdatei umzuwandeln. In dieser kannst du dann nach deinem String suchen.

Unter der Annahme das Formatierung etc. immer absolut identisch sind könnte es so Funktionieren

Abspeichern als script.bat
Code:
@Echo off 
set filename=%1
for /f "Tokens=2 delims=:(" %%A in (
    'findstr /I "Artikelnummer:" %filename%'
    ) Do Call :Trim NUMBER %%A 
Echo Artikelnummer gefunden: %NUMBER% 
Goto :Eof 
:Trim 
Set %1=%2 
Goto :Eof

Aufruf dann mit
Code:
.\script.bat mein_umgewandeltes_pdf.txt
Auf diese Weise erhälst du dann die Nummer die hinter "Artikelnummer" steht.Damit kannst du dir dann deinen neuen Namen zusammenbauen.

Für den Rest musst du dich dann schon selber bemühen.
 
@Holgip danke sehr, jedoch brauch ich es als Skript.

@Sakphul vielen dank für das skript, ich habe es jetzt als txt Datei erstellen lassen und dein Skript läuft auch schenibar ab (cmd Fenster geht auf und wieder zu), jedoch hat er nichts unbennant. Hätte ich da noch was ändern müssen? Hab dein Skript so kopiert wie es da steht. Wie gesgat kenne mich null aus damit.
 
Zuletzt bearbeitet:
Ah, okey, das mit dem Namen in Zeile 10 hatte ich überlesen.

Bekommst du die Artikelnummer auch angezeigt? Schau dir mal die txt-Dateien an. Die Artikelnummer muss mit einem "Return" abgeschlossen sein, also z.B.:

Blablabla Artikelnummer: 12345
Weiteres Blablabla

Sakphul schrieb:
Für den Rest musst du dich dann schon selber bemühen.

Da er ja gar keine Ahnung von Scripten hat, hier die Lösung:

Füge nach dem "Set %1=%2" folgendes in das Script ein (das hat bei mir geklappt):

ren %filename%=%2.txt
Ergänzung ()

Und? Hat's geklappt?
 
Zuletzt bearbeitet:
Guten Morgen,

da ich das ganze in der Arbeit brauche werde ich das heute nochmals versuchen mit deinem Hinweis :). Werde Rückmeldung geben.

EDIT:

So habe das nun ausprobiert, jedoch funktioniert das nicht bisher...ärgerlich das ich mich mit dieser Programmierung einfach null auskenne...:rolleyes:

Hier mal ein Beispiel der txt Datei:
Beispieltxt.JPG

Hier mal das Skript wie es jetzt aussieht:
@Echo off
set filename=%1
for /f "Tokens=2 delims=: (" %%A in (
'findstr /I "Artikel:" %filename%'
) Do Call :Trim NUMBER %%A
Echo Artikel gefunden: %NUMBER%
Goto :Eof
:Trim
Set %1=%2
ren %filename%=%2.txt
Goto :Eof


Es funktioniert :)

hab den Fehler gefunden, scheinbar geht das nur wenn ich die txt Datei auf den Desktop ziehe.
Sie ist aber in nem Ordner...muss ich dort die Datei suchen lassen?
 
Zuletzt bearbeitet:
Nö, du musst nur das Script im gleichen Ordner haben, wie die TXT-Dateien, ansonsten müsstest du den Pfad zu den Dateien im Script angeben, oder den Pfad beim Scriptstart mit angeben, also z.B.
"script.bat d:\pfad_zu_den_Dateien\mein_umgewandeltes_pdf.txt"
 
Morgen,
leider besteht mein Problem immer noch :(

Ich habe es bisher nur geschafft wenn ich die txt Datei manuell selbst erstelle und Artikel mit Nummer selbst rein schreibe.

Jedoch wenn die txt Datei selbst erstellt wird (wie oben zu sehen im Anhang vom 16.3) geht gar nichts -.-...und ich kapiere es auch nicht.
Das Skript und der Aufruf leigt mit der txt Datei im selben Ordner.
Das Skript hat den verweis auf | Artikel :
Der Aufruf hat den Verweis auf den Namen der txt Datei PDFCreator.txt

Aufruf startet, jedoch passiert nichts.
Schreibschutz etc ist auch nicht auf der txt drauf.

Script:
@Echo off
set filename=%1
for /f "Tokens=2 delims=: (" %%A in (
'findstr /I "|Artikel:" %filename%'
) Do Call :Trim NUMBER %%A
Echo Artikel gefunden: %NUMBER%
Goto :Eof
:Trim
Set %1=%2
ren %filename%=%2.txt
Goto :Eof

Aufruf:
.\script.bat PDFCreator.txt


Hoffe mir ist hier zu helfen ^^ verzweifel langsam.

Nachtrag:
Ok bin mir zu hundert Prozent sicher das das Problem an dem Programm leigt welches mir die txt automatisch erstellt. Nämlich der PDFCreator von PDFforge.

Und es scheint das das Skript nur auf Windows 7 funktioniert, jedoch nicht auf Windows XP
 
Zuletzt bearbeitet:
Sascha123145 schrieb:
Und es scheint das das Skript nur auf Windows 7 funktioniert, jedoch nicht auf Windows XP
Probiere Mal das Skript in eine .cmd-Datei umzubenennen. XP hat 2 Kommando-Interpreter - command.com für .bat-Dateien und cmd.exe für .cmd-Dateien. Beide unterscheiden sich zum Beispiel in Bezug auf den Umgang mit langen Dateinamen, was Dein Problem unter XP verursachen könnte.
 
Andreas_ schrieb:
Probiere Mal das Skript in eine .cmd-Datei umzubenennen. XP hat 2 Kommando-Interpreter - command.com für .bat-Dateien und cmd.exe für .cmd-Dateien. Beide unterscheiden sich zum Beispiel in Bezug auf den Umgang mit langen Dateinamen, was Dein Problem unter XP verursachen könnte.


Danke sehr...das hat funktioniert auf XP.
Jetzt muss ich nur ncoh heruasfinden warum das ganze nur mit manuell erstellten txt Dateien funktioniert und nicht mit den automatischb erstellten txt dateien.
Hat da noch jemand eine Idee oder kennt einen anderen umfangreichen auto konverter?
 
Das Script sucht nach genau diesem String: "Artikel:". Im Beispiel im Thread #6 sind aber zwischen "Artikel" und dem Doppelpunkt mindestens 10 Leerzeichen. Die müssen im Script dann auch vorhanden sein, sonst wird der String nicht gefunden (also so z.B.: "Artikel----------:") (blöde Formatierung, deshalb habe ich zur Verdeutlichung die Leerzeichen als "-" gesetzt).
D.h., dass bei allen umgewandelten PDFs dann auch die gleiche Anzahl an Leerzeichen zwischen Artikel und Doppelpunkt stehen müssen, sonst funktioniert das Script nicht.
 
Zuletzt bearbeitet:
Holgip schrieb:
Das Script sucht nach genau diesem String: "Artikel:". Im Beispiel im Thread #6 sind aber zwischen "Artikel" und dem Doppelpunkt mindestens 10 Leerzeichen. Die müssen im Script dann auch vorhanden sein, sonst wird der String nicht gefunden (also so z.B.: "Artikel----------:") (blöde Formatierung, deshalb habe ich zur Verdeutlichung die Leerzeichen als "-" gesetzt).
D.h., dass bei allen umgewandelten PDFs dann auch die gleiche Anzahl an Leerzeichen zwischen Artikel und Doppelpunkt stehen müssen, sonst funktioniert das Script nicht.


Habe ich probiert, jedoch war das leider nicht der Fehler.
Wenn ich eine txt selbst erstelle und genau den selben Text aus der automatisch erstellten in mein manuell erstelltes kopiere, geht es nach wie vor nur mit dem manuell erstellten.

Irgendwas muss an der Datei anders sein...Berechtigungen etc sind alle identisch
 
Du hast noch einen Fehler im Script: Nach "delims=:" kommt kein Leerzeichen, du hast zwei.
Ich habe das @echo off auskommentiert (mit "rem @echo off"). Dann sieht man im CMD, was das Script macht. Bei mir hat dein Script den Fehler in dieser Zeile gebracht ["("" kann syntaktisch an dieser stelle nicht verarbeitet werden]. Probier's mal aus.

Ich habe mir mal nach #6 eine Datei gebastelt, indem ich Artikel und Doppelpunkt mit TABs getrennt hat. Dort findet er keine Artikelnummer. Evtl. sind also in den konvertierten Dateien Tabstopps eingefügt.
Am besten, du lädst mal eine von den erstellten txt-Dateien hier hoch, damit man mal schauen kann.

P.S.: Du brauchst nicht jedes Mal die vorher stehende Antwort zitieren. Nur wenn das, auf das du dich beziehst nicht direkt vor deiner Antwort steht, ist ein Zitat sinnvoll ;).

Edit: Jetzt hab ich's: Du musst im Script den Doppelpunkt hinter "Artikel" weglassen, dann funktioniert es mit meiner Tab-Verseuchten Datei. Allerdings sieht der Dateiname dann so aus: 10105700_______________.txt
Das liegt daran, dass die Unterstriche direkt nach der Nummer kommen, ohne Leerzeichen. Mit "Joe" bekommst du das aber auch noch weg.

Code:
rem @Echo off
set filename=%1
for /f "Tokens=2 delims=:_(" %%A in (
'findstr /I "Artikel" %filename%'
) Do Call :Trim NUMBER %%A
Echo Artikel gefunden: %NUMBER%
Goto :Eof
:Trim
Set %1=%2
ren %filename%=%2.txt
Goto :Eof

Nochmal Edit: Die Unterstriche bekommt man auch weg, indem man bei "delims=:" noch einen Unterstrich einfügt (siehe Code). Aber nur, wenn das in den Txt-Dateien auch Unterstriche sind!
 
Zuletzt bearbeitet:
Erstmal vielen Dank für deine Mühe :), das ist natürlich nicht selbstverständlich.
Auf Windows 7 funktioniert das ganze hervorragend , bin begeistert.

Jedoch auf dem XP Rechner scheint dort irgendwas nicht zu funktionieren, obwohl die ich es in .cmd umbenannt habe. Ich vermute vielleicht liegt es irgendwie an gewissen Benutzerberechtigungen an diesem PC ,was das script nicht zulässt. Denn ansonsten sollte es ja genauso dort laufen wie auf win7:
Da werde ich morgen nochmal schauen.

BTW: Gibt es noch ne elegante Möglichkeit diese txt nach dem Umbenennen wieder in ne PDF zu wandeln?
 
Hab den Fehler gefunden, das Programm PDFCreator macht irgendwas mit der txt was das Skript daran hindert zu funktionieren.
 
Zurück
Oben