Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

PDF nach deren Inhalt umbenennen, den Namen immer auslesen

Frage Microsoft

Mitglied: Virtu-Al

Virtu-Al (Level 1) - Jetzt verbinden

20.11.2008, aktualisiert 21.11.2008, 17418 Aufrufe, 19 Kommentare

Neuen Namen aus gleicher Zeile/Stelle auslesen und umbenennen

Erstmal hallo an alle Profis hier !

Bin völlig neu hier und hoffe ihr könnt mir helfen.
Ich hab ähnliche Batches hier drin gefunden, habs aber nicht geschafft diese an meine Erfordernisse anzupassen.
Hab von Batch Programming leider so gut wie keine Ahnung.

Also:
Ich habe viele pdf Files in einem Verzeichnis, diese sind immer gleich strukturiert.
Leider sind die Dateinamen einfach von 1 aufwärts numeriert was nicht auf den Inhalt hinweist, darum bräuchte ich diese Umbenennung.
Der neue Dateiname wäre in Zeile 3 zu finden.
Zuerst kommen 20 Zeichen, also normale Schrift, dann ist ein Tab und dann steht der gewünschte Name welcher maximial 7 Zeichen lang ist, minial 3 Zeichen.
Der Name selbst besteht aus Zahlen und einem "-", also z.b. 1234-45, oder auch weniger, 12-34.

Ich hoffe das geht irgendwie, würde mir echt sehr helfen.
Mit freundlichen Grüßen
Virtu-Al
Mitglied: hmarkus
20.11.2008 um 15:41 Uhr
Hallo,

also was nicht geht: Du kannst aus einer PDF-Datei keine Zeile (oder Zeichen oder so) auslesen.
Was Du machen kannst: mach Dir eine Excel-Tabelle mit drei Spalten.
1. Spalte: move
2. Spalte: alter Dateiname
3. Spalte: neuer Dateiname
dann speicherst Du die Datei ab mit der Endung .txt, benennst nach .bat um und dann musst Du im Editor alle Tabulatorzeichen durch Leerzeichen ersetzen.
Das ist dann ein Batch-Programm, das alle Dateien umbenennt.
Die Überlegung geht davon aus, dass es irgendein Schema gibt, wie die Dateinamen zusammenhängen und sowas lässt sich in Excel leicht machen.

Gruß

Markus
Bitte warten ..
Mitglied: Virtu-Al
20.11.2008 um 16:38 Uhr
hmmm, werd ich nicht so richtig schlau draus.

danke erstmal für die antwort ;)

Dachte mir schon dass es beim pdf schwierig wird.
Aber die pdf´s zwecks Umbenennung in eine exel oder text Datei zu konvertieren
so dass eine Datei mit gleichem Namen nur einmal als pdf und einmal als txt vorhanden
ist wäre ja kein problem.

12345.pdf - unverändertes Original
12345.txt - aus obigem pdf generiertes txt file in dem
der Name in Zeile 11/Spalte 64 - 71 ist.

Bei sämtlichen so erzeugten txt files wäre der Name immer an der selben stelle und
sollte auf den Dateinamen des pdf angewandt werden.

lg
Bitte warten ..
Mitglied: bastla
20.11.2008, aktualisiert 14.08.2013
Hallo Virtu-Al und willkommen im Forum!

Wenn es die beschriebene Textdatei gibt und die Position des gesuchten Strings verlässlich ist, könnte der Batch dazu (ungetestet) so aussehen:
01.
@echo off & setlocal 
02.
set "Verzeichnis=D:\Ein Verzeichnis mit vielen PDF" 
03.
 
04.
pushd "%Verzeichnis%" 
05.
for /f "delims=" %%i in ('dir /b/a-d *.pdf') do call :ProcessFile "%%i" 
06.
popd 
07.
goto :eof 
08.
 
09.
:ProcessFile 
10.
if not exist "%~n1.txt" echo Keine txt-Datei fuer %1 gefunden. & goto :eof 
11.
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" %1^|findstr /b "11:"') do set "Zeile=%%b" 
12.
set Name=%Zeile:~63,7% 
13.
echo ren %1 "%Name%.pdf" 
14.
echo del "%~n1.txt" 
15.
goto :eof
Soferne die Umwandlung in eine Textdatei auch per Batch möglich ist, könntest Du die Zeile 10 so schreiben:
if not exist "%~n1.txt" PDF2TXT || (Textdatei fuer %1 konnte nicht erzeugt werden! & goto :eof)
wobei mit "PDF2TXT" natürlich der Aufruf des Konvertierungsprogrammes gemeint ist (die PDF-Datei kann dabei als %1 übergeben werden).

Die "echo" am Beginn der letzten beiden Zeilen sollen das gefahrlose Testen des Batches erlauben, da so die Befehle für das Umbenennen bzw das Löschen der Textdatei nur angezeigt werden. Nach dem Entfernen des "echo" passiert's dann wirklich ...

Nicht ganz klar ist mir übrigens, wie ein Name mit weniger al 7 Zeichen in der Textdatei dargestellt wird - werden die restlichen Stellen zB mit Leerzeichen aufgefüllt? Falls es (dadurch) zum weiteren Text eine eindeutige Abgrenzung durch Leerzeichen gibt, ließe sich der Name so extrahieren:
for /f "tokens=1*" %%a in ("%Zeile:~63%") do set "Name=%%b"
Grüße
bastla

[Edit] Zeile 5 ergänzt [/Edit]
Bitte warten ..
Mitglied: hmarkus
20.11.2008 um 22:40 Uhr
Hallo nochmal,

ich hab mich missverständlich ausgedrückt. Die Exceltabelle soll als Textdatei abgespeichert werden. Diese wird in eine .bat Datei umbenannt und stellt dann das Programm dar. Dieses muss im gleichen Verzeichnis liegen wie Deine PDF-Dateien und wird dann ausgeführt.
Wenn z.B. eine Datei 34-345.pdf umbenannt werden soll nach 45-432.pdf, dann lautet die Zeile in der Excel-Datei:
move 34-345.pdf 45-432.pdf
Hoffentlich ist es jetzt klarer geworden

Gruß

Markus
Bitte warten ..
Mitglied: Biber
20.11.2008 um 23:46 Uhr
@hmarkus

Fussnote:
Sollte zufällig gerade kein Excel zur Hand sein, ließe sich diese Textdatei aber auch mit einem handelsüblichen Editor erstellen und mit der Endung *.bat statt *.txt abspeichern.

Oder übersehe ich im Moment irgendwie den Charme des Excel-Schlenkers?

Ich meine nur - wenn Virtu-al (BTW: willkommen im Forum) nun extra dafür ein Excel bei eBay ersteigert.... er könnte sich hinterher ärgern....

Grüße
Biber
Bitte warten ..
Mitglied: bastla
20.11.2008 um 23:56 Uhr
... was ihn übrigens auch ärgern könnte, wäre die Tatsache, dass "move" in einem Batch ziemlich rücksichtslos mit bereits vorhandenen Zieldateien umgeht ...

Grüße
bastla
Bitte warten ..
Mitglied: Virtu-Al
21.11.2008 um 08:08 Uhr
ahh jetzt ist es mir klar mit excel, keine sorge - ich hab ne version.

Bin grad ein bissl im Streß und werd erst nächste Woche zum Testen kommen.
Vorerst mal danke an alle, ich geb dann (hoffentlich) Erfolgsmeldung wenn ichs durch habe.
Jetzt hab ich mal ne Richtung für meine grauen Zellen ;)

lg
Virtu-Al
Bitte warten ..
Mitglied: hmarkus
21.11.2008 um 10:21 Uhr
Hallo zusammen,

also das mit Excel ist nur eine Möglichkeit, ich hatte mal auf einem Server 500 Benutzer anzulegen, deren Profile zu kopieren usw., da hab ich das so mit Excel gemacht. Mir ist natürlich klar, dass das mit Batch-Programmierung wenig zu tun hat, aber es funktioniert ganz gut.
Ehrlich gesagt würde ich in dem speziellen Fall evtl. auch mit vim arbeiten. Wahrscheinlich ist es Sinnvoll sich schonmal eine Textdatei mit allen umzubenennenden Dateien anzulegen:
dir /B *.pdf > pdf-Dateien.txt

@bastla: ich würde alle Dateien erstmal in einem anderen Verzeichnis sichern, aber das versteht sich von selbst.

Gruß

Markus
Bitte warten ..
Mitglied: bastla
21.11.2008 um 14:38 Uhr
@hmarkus
ich würde alle Dateien erstmal in einem anderen Verzeichnis sichern, aber das versteht sich von selbst.
Auch wenn ich davon ausgehe, dass sich das auch für Virtu-Al von selbst versteht, war's mir den Hinweis wert ...
da hab ich das so mit Excel gemacht. Mir ist natürlich klar, dass das mit Batch-Programmierung wenig zu tun hat, aber es funktioniert ganz gut.
Es muss ja auch gar nicht Batch sein (und Excel kann in ähnlichen Situationen durchaus sinnvoll eingesetzt werden - besonders wenn Benutzer keine Programmier-/Scriptingkenntnisse haben), aber das eigentliche Problem ist ja das Auslesen des neuen Namens (der Rest ist nur eine einfache Schleife mit ev ein paar Verzierungen ) - insofern wird es aber nicht so viel nützen, die Dateiliste vorweg zu erzeugen ...

Grüße
bastla
Bitte warten ..
Mitglied: hmarkus
21.11.2008 um 14:57 Uhr
Hallo nochmal,

das Problem ist ja gerade, dass das Auslesen des Dateinamens aus einer PDF-Datei nicht funktioniert. Aber wenn es irgendeine Regel gibt, nach der die Namen aufgebaut sind, dann kann man das auch programmieren.
Virtu-Al schreibt ja, dass die neuen Dateinamen aus Zahlen bestehen, da denke ich natürlich, dass diese Zahlen auch nach einer bestimmten Regel aufgebaut sind... Er braucht ja nur eine Tabelle, in der jeweils der alte und der neue Dateiname in einer Zeile stehen. Und da wäre die obige Dateiliste immerhin eine Grundlage.
Genug der Theorie...

Gruß

Markus
Bitte warten ..
Mitglied: hajowe
02.04.2009 um 19:26 Uhr
schau dir mal das an. Vielleicht bringt es dich weiter
Programm
Bitte warten ..
Mitglied: noob-x
14.08.2013, aktualisiert um 10:01 Uhr
Hallo,

das wäre ganu das was ich suche, wenn ich den Befehl jedoch starte bekomme ich folgende Meldung

"Keine txt-Datei fuer " Datenträger in Laufwerk C: is OS" gefunden.
"Keine txt-Datei fuer " Volumenseriennummer: ..........." gefunden.
"Keine txt-Datei fuer " Verzeichnis von C:\Temp" gefunden.
"Keine txt-Datei fuer " 12.08.2013 09:56 100.254 0000.pdf" gefunden.
.....
....
...
es liegen die 0000.pdf und die 0000.txt im Verzeichnis

muss da vielleicht anstatt dem dir in Zeile 5 was anderes oder zusätzlich rein.

Bitte um Hilfe


Danke

LG

Andy

Zitat von bastla:
Hallo Virtu-Al und willkommen im Forum!

Wenn es die beschriebene Textdatei gibt und die Position des gesuchten Strings verlässlich ist, könnte der Batch dazu
(ungetestet) so aussehen:
01.
@echo off & setlocal 
02.
> set "Verzeichnis=D:\Ein Verzeichnis mit vielen PDF" 
03.
>  
04.
> pushd "%Verzeichnis%" 
05.
> for /f "delims=" %%i in ('dir *.pdf') do call :ProcessFile "%%i" 
06.
> popd 
07.
> goto :eof 
08.
>  
09.
> :ProcessFile 
10.
> if not exist "%~n1.txt" echo Keine txt-Datei fuer %1 gefunden. & goto :eof 
11.
> for /f "tokens=1* delims=:" %%a in ('findstr /n "^" %1^|findstr /b "11:"') do set 
12.
> "Zeile=%%b" 
13.
> set Name=%Zeile:~63,7% 
14.
> echo ren %1 "%Name%.pdf" 
15.
> echo del "%~n1.txt" 
16.
> goto :eof 
17.
> 
Bitte warten ..
Mitglied: bastla
14.08.2013 um 09:32 Uhr
Hallo noob-x!
muss da vielleicht anstatt dem dir in Zeile 5 was anderes oder zusätzlich rein.
Letzteres - da hatte ich leider geschlampt.
for /f "delims=" %%i in ('dir /b/a-d *.pdf') do call :ProcessFile "%%i"
Ich bessere das oben auch noch nach ...

Grüße
bastla
Bitte warten ..
Mitglied: noob-x
14.08.2013 um 11:03 Uhr
Hallo Bastla,

hatte es inzwischen schon gefunden, stand sogar ähnlich im Beitrag von hmarkus
01.
dir /B *.pdf > pdf-Dateien.txt
aber kann es sein dass in dem Code noch was nicht stimmt.

versuche in meinem Fall aus Zeile 8 Spalte Spalte 17 bis 19 auszulesen
hab im Batchfile in Zeile 11 findstr /b "11: auf 8: und
63,7 auf 17,3 geändert aber die Datei wird immer auf .pdf umbenannt.

was mach ich falsch

Danke

LG

Andy
Bitte warten ..
Mitglied: bastla
14.08.2013, aktualisiert um 11:12 Uhr
Hallo noob-x!

Mit "17,3" erhältst Du die Zeichen aus den Spalten 18 - 20 (die ersten 17 Zeichen werden übersprungen).

Grüße
bastla
Bitte warten ..
Mitglied: noob-x
14.08.2013 um 13:25 Uhr
Hallo,

hab ich gemacht, die Datei sollte lt Coordinaten DON.pdf heissen, rauskommen tut aber ì►Ì.pdf
woher kommt das ?

LG

Andy
Bitte warten ..
Mitglied: bastla
14.08.2013 um 13:30 Uhr
Hallo noob-x!
woher kommt das ?
Na aus Deinem PDF - das lässt sich vermutlich nicht so gut als Text interpretieren ...

Grüße
bastla
Bitte warten ..
Mitglied: noob-x
14.08.2013 um 13:43 Uhr
nein, er text für den Dateinamen wird ja aus der Textdatei ausgelesen (oder irre ich da), die ich mit pfttotext.exe erstellt habe und welche im gleichen Verzeichnis mit gleichem Dateinamen.txt liegt, kann die .txt ganz normal mit Editor öffnen und der Text steht auch sauber drin.

???

LG

ANdy
Bitte warten ..
Mitglied: bastla
14.08.2013, aktualisiert um 13:54 Uhr
Hallo noob-x!

Dann versuch es mit folgender Zeile 11:
for /f "tokens=1* delims=:" %%a in ('type %1^|findstr /n "^"^|findstr /b "11:"') do set "Zeile=%%b"
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Batch & Shell
gelöst 1 PDF duplizieren und umbenennen nach CSV mittels Batch (5)

Frage von Kalisser zum Thema Batch & Shell ...

Batch & Shell
Pdf Files umbenennen (7)

Frage von Sacred zum Thema Batch & Shell ...

VB for Applications
gelöst VBA: Wert von einer Website (pdf-Dokument) auslesen und in Excel kopieren (16)

Frage von Stern123 zum Thema VB for Applications ...

Batch & Shell
gelöst Verschieben und Umbenennen von Video-Dateien anhand der Nummer im Namen (3)

Frage von Foja.Filmer zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...