Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Microsoft

PDF nach deren Inhalt umbenennen, den Namen immer auslesen

Mitglied: Virtu-Al

Virtu-Al (Level 1) - Jetzt verbinden

20.11.2008, aktualisiert 21.11.2008, 19477 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.
mfg
Virtu-Al
Mitglied: 64748
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: 64748
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
@64748

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: 64748
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
@64748
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: 64748
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 ..
Ähnliche Inhalte
Batch & Shell
PDF Dateien nach Inhalt einer TXT Datei umbenennen
gelöst Frage von Chris1979Batch & Shell2 Kommentare

Hallo zusammen, ich stehe gerade vor einem Problem und hätte eine Frage zur Umsetzung. Ich bin mit der Batch ...

Batch & Shell
Dateien nach Inhalt umbenennen
gelöst Frage von IcemaniacBatch & Shell4 Kommentare

Hallo Community, ich hoffe Ihr könnt mir weiter helfen. Ich habe in einem Ordner hunderte txt-Dateien auf einem Windows-PC, ...

Batch & Shell
Pdf Files umbenennen
Frage von SacredBatch & Shell7 Kommentare

Hallo ihr Lieben Ich stehe vor folgendem Problem. Ich habe 600 pdf-Files die umbenannt werden sollen. Der Aktuelle name ...

Batch & Shell
Pdf nach inhalt splitten und benennen
Frage von kkdukeBatch & Shell5 Kommentare

hallo, ich habe eine pdf datei in der sagen wir mal 10000 rechnungen drin sind (gescannt) und ocr-indexiert. die ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit29 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...

Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...