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
GELÖST

pdf-dateien mittels einer txt-datei und batch-dateien umbenennen

Frage Entwicklung Batch & Shell

Mitglied: eeleater

eeleater (Level 1) - Jetzt verbinden

15.03.2007, aktualisiert 16.03.2007, 8943 Aufrufe, 15 Kommentare

hallo, ich habe das problem, dass ich eine textdatei, bericht.txt, habe, und etwas über 50000 pdf dateien.

nun will ich es so, dass diese pdf dateien, 78381_Seite_1.PDF als beispiel, umbenannt werden sollen in: 69894_Seite_2.PDF

ein test inhalt der bericht.txt:

Bestell-Nr. Beschreibung Erstell-Datum Land Dokumentenstatus Information Dokument-ID Ersteller Eintrag vom Änderung durch Letzte Änderungen Letzter Zugriff Letzter Zugriff am Seiten Verknüpfte Dokumente

P16841 Microfinance for the Poorest 08.03.2007 Pakistan Neu Dokument P16841 : Pakistan - Microfinance for the Poorest 89358 Frau Bolduan 09.03.2007 14:53:15 Systemverwalter_1 09.03.2007 14:53:18 Frau Bolduan 09.03.2007 15:02:15

in den dateinamen sind die 5 zahlen vorne variabel, sowie die seitenzahl hinter seite_x ebenfalls. in der datei bericht.txt sind alle daten, die benötigt werden zum umbenennen, enthalten. die dokument-id "89358" soll zum beispiel durch die bestellnummer "P168412" ersetzt werden. also muss die dokument-id in der datei gesucht werden, dazu die passende datei ebenfalls, und dann muss die dokument-id vorne durch die bestellnummer ersetzt werden.

ich hoffe das ist jetzt verständlich, wenn nicht tut es mir leid, aber besser kann ich es nicht erklären.
Mitglied: Biber
15.03.2007 um 18:25 Uhr
Moin eeleater,

willkommen im Forum.

Das sind zu unzureichende Informationen für mich.
Insbesondere Deine Phantasien mit
...78381_Seite_1.PDF als beispiel, umbenannt werden sollen in: 69894_Seite_2.PDF...
sind mir nicht nachvollziehbar.
In dem geposteten Gesamtabzug ist zwar irgendwo eine Spalte "Seiten" angegeben, aber erstens ist die leer und zweitens sieht die für mich eher nach einer Gesamtseitenzahl aus.

Wenn ich die beiden Beispielsätze mit einem FOR /F-Einzeiler auslesen würde, käme heraus:
01.
>aallutscher.bat 
02.
[BestellNr: Bestell-Nr.] [DokID: Dokument-ID] [Seiten: Seiten] 
03.
[BestellNr: P16841] [DokID: 89358] [Seiten: ]
...d.h. Bestell-Nummer und Dokumenten-ID würden gefunden werden, aber bei "Seiten" steht nix.

Welche Datei(en) sollten jetzt a) gesucht werden b) in was umbenannt werden?

Bitte doch bitte den offensichtlich stinkefaulen Erzeuger dieses Gesamt-Berichts mal darum, Dir eine Liste zu exportieren mit den 2 (3? 4?) Feldern, die Du wirklich brauchst ("alte" Dokumenten-ID; "neue" Bestellnummer; Seitenangabe (alt) falls relevant; Seitenangabe (neu) falls Relevant).
Und das Ganze mit ";" getrennt statt mit TABs.

Und von Dir fehlt noch die Information, ob Du
- eine Log-Datei brauchst für alle umbenannten (alterName, neuerName) und/oder
- eine separate Logdatei für alle nicht gefundenen und
- ob denn Kollisionen zu erwarten sind (der "neue" Zielname tritt mehrfach auf) und wie damit umzugehen ist.

Gruss
Biber
Bitte warten ..
Mitglied: maneich
15.03.2007 um 18:38 Uhr
Hallo,

für jemand der neben Dir steht/sitzt ist Deine Erluterung möglicherweise einleuchtend, aus der Ferne aber kann man damit nicht viel anfangen.

Du hast also eine Text-Datei "bericht.txt", OK.

In dieser stehen am Anfang jeder Zeile die Bestell-Nr. Und in der Mitte der Zeile steht die Document-ID. Die Document-ID soll nun durch die Bestell-Nr. ersetzt werden, auch OK.

Hat die Bestell-Nr. eine feste Länge? Wenn nein, ist sie von den nächsten Angaben in dieser Zeile durch ein Leerzeichen getrennt??

Welches Kriterium gilt für die Seiten-Nr.. Steht die neue Nr. auch irgendwo in der Zeile in bericht.txt oder soll hier fortlaufend nummeriert werden oder welche Vorstellungen hast Du hier??

Liegen die PDF-Dateien alle im gleichen Verzeichnis oder in Unterordner des gleichen Hauptverzeichnisses??

Mit den notwendigen Informationen ist das sicher machbar; in Deinem Fall würde ich aber vorschlagen, das mit einem VBS-Script durchzuführen. Ist schneller und die meisten Befehle die Du dazu benötigst, sind schon fest vorgegeben.

MfG maneich
Bitte warten ..
Mitglied: eeleater
15.03.2007 um 20:08 Uhr
@Biber:
Welche Datei(en) sollten jetzt a) gesucht werden b) in was umbenannt werden?
zu a) die alten dateien mit den einmaligen dokumenten ids,
zu b) die dateien sollen einfach nur nachdiesem scema umbenannt werden:

dokumenten-id_Seite_x.pdf > bestellnummer_Seite_x.pdf

wenn möglich kann die seiten anzahl ja von den alten dateien abgeleitet werden.
wenn nicht ist dies auch egal.

- eine Log-Datei brauchst für alle umbenannten (alterName, neuerName) und/oder
- Nein brauche ich nicht unbedingt, aber wenn es machbar wäre, wäre das auch nicht schlimm.

- ob denn Kollisionen zu erwarten sind (der "neue" Zielname tritt mehrfach auf) und wie damit umzugehen ist.
- nein, jede Bestellnummer besteht nur einmal, von diesem Standpunkt aus, dürften keine Kollisionen auftreten.

@maneich:

Hat die Bestell-Nr. eine feste Länge? Wenn nein, ist sie von den nächsten Angaben in dieser > Zeile durch ein Leerzeichen getrennt??

Ja. Hat sie. 6 Zeichen.

Welches Kriterium gilt für die Seiten-Nr.. Steht die neue Nr. auch irgendwo in der Zeile in
bericht.txt oder soll hier fortlaufend nummeriert werden oder welche Vorstellungen hast Du > hier??

Ehrlich gesagt, ist die Seitennummer egal, tut mir leid wenn ihr da zu viel überlegen musstet.

Liegen die PDF-Dateien alle im gleichen Verzeichnis oder in Unterordner des gleichen
Hauptverzeichnisses??

Ja, alle liegen im selben ordner.

Mit den notwendigen Informationen ist das sicher machbar; in Deinem Fall würde ich aber vorschlagen, das mit einem VBS-Script durchzuführen. Ist schneller und die meisten Befehle die Du dazu benötigst, sind schon fest vorgegeben.

MfG maneich
Bitte warten ..
Mitglied: Biber
15.03.2007 um 20:53 Uhr
Na gut, eeleater,

dann wäre das Batch-Grundgerüst (ausnahmsweise in epischer Breite langgezogen) so:

01.
::---------snipp aaliBaba.bat 
02.
@echo off & setlocal enabledelayedExpansion 
03.
Set "logdatei=con:" 
04.
REM Hier steht nach dem "delims= eine TAB-Taste als Trennzeichen !!! 
05.
@for /f "skip=1 tokens=1,7,14 delims=	" %%i in (bestell.txt) do call :renameAll %%j %%i %%k 
06.
goto :eof 
07.
 
08.
:renameAll  
09.
@echo [oldDokID:%1] [newBestellNr: %2]  [Seiten:%3] 
10.
for %%i in (%1*.pdf) do call :renameOne %%i %1 %2 %3 
11.
GOTO :eof 
12.
 
13.
:renameOne 
14.
REM Parameter1=die gefundene PDF-Datei; Param2=alterNamensTeil Param3=neuer NamensTeil  
15.
REM Param4 (unused) ist diese Seitenangabe..falls irgendwann sinnvoll 
16.
Set theFoundPdf=%1 
17.
Set thenewName=!theFoundPdf:%2=%3! 
18.
<b>ECHO </b>rename %theFoundPdf% %theNewName%  
19.
if not errorlevel 1 echo Renamed: %theFoundPdf% to %theNewName% >>%logdatei% 
20.
goto :eof
Das fette ECHO muss nach dem Testen und Anpassen raus.
Und der Name der %logdatei% am Anfang geändert werden.

Der Mini-Batch geht davon aus, dass er in dem Verzeichnis gestartet wird, wo sich auch bestell.txt und *.pdfs befinden.

Gruss
Biber

P.S. Wären Semicola und nicht diese albernen TABSTOPPs als Delimiter verwendet worden, hätte es auch ein Oneliner vom CMD-Prompt getan. Selbst verursachte Leiden...
P.P.S. Hab ich bemerkt, dass Du auf meine Bitte nach einer sinnvoll erzeugten "Bericht.txt" nicht reagiert hast
Bitte warten ..
Mitglied: eeleater
15.03.2007 um 21:01 Uhr
fettes thx!

ich danke dir 1000x dafür!!!!!
Bitte warten ..
Mitglied: Biber
15.03.2007 um 21:05 Uhr
Na, warte lieber erst mal ab, ob der Batch mehr macht außer Plattenplatz belegen...

Wenn es klappt, setz bitte den Beitrag auf "gelöst" bei Gelegenheit.

Danke
Biber
Bitte warten ..
Mitglied: eeleater
16.03.2007 um 09:10 Uhr
sorry, aber ich hab heute erfahren, dass der gesamte dateiname einfach nur durch die bestellnummer ersetzt werden soll.

nach diesem schema:
dokument-id_Seite_x.pdf > bestellnummer.pdf
Bitte warten ..
Mitglied: Biber
16.03.2007 um 09:22 Uhr
Na, hast Du ein Glück...

Dann kannst Du den Batch ja noch ein bisschen eindampfen:
01.
::---------snipp aaliBaba.bat 
02.
@echo off & setlocal 
03.
Set "logdatei=con:" 
04.
REM Hier steht nach dem "delims= eine TAB-Taste als Trennzeichen !!! 
05.
@for /f "skip=1 tokens=1,7 delims=    " %%i in (bestell.txt) do ( 
06.
     If exist %%j*.pdf rename  %%j*.pdf %%i.pdf && echo Renamed: %%j*.pdf to %%i.pdf >>%logdatei% 
07.
)
Gruss
Biber
Bitte warten ..
Mitglied: eeleater
16.03.2007 um 09:30 Uhr
das geht so leider nicht, bei der ersten ausführung des codes hatte er einen syntaxfehler,
bei der zweiten und dritten usführung meinte er nur,
Dateiname existiert bereits, oder die Datei konnte nicht gefunden werden.
Bitte warten ..
Mitglied: Biber
16.03.2007 um 09:47 Uhr
Dann überprüf bitte mal, ob in Deiner *.bat-Datei auch noch ein TAB-Zeichen dort steht, wo eins sein soll.
Bei mir ...
01.
>aali.bat 
02.
Renamed: 89358*.pdf to P16841.pdf
..works as designed...

Gruss
Biber
Bitte warten ..
Mitglied: eeleater
16.03.2007 um 09:59 Uhr
wenn du die vier leerzeichen nach dem delims meinst, dann stimmt das, aber müsste da nicht ein einfacher tab-stopp hin, statt 4 leerschritten?
Bitte warten ..
Mitglied: Biber
16.03.2007 um 10:02 Uhr
Ja, diese vier Leerzeichen meinte ich.
Bitte dort wieder einen TAB statt der vier Leerzeichen einfügen.

Gruss
Biber
Bitte warten ..
Mitglied: eeleater
16.03.2007 um 10:05 Uhr
ist da ja, aber es geht trotzdem nicht so wie es eigentlich laufen sollte

edit:// ich habe es mal getestet, habe zwei leere pdf-dateien erstellt mit 2 nummern aus der datei, die erste erhält nur "--------.pdf" als dateinamen, die zweite wird korrekt umbenannt.

EDIT2:// Nun geht alles ich habe einfach bei skip= statt 1 eine 6 hingeschrieben, und nun geht alles.

aber trotzdem danke!!!!
Bitte warten ..
Mitglied: maneich
16.03.2007 um 12:28 Uhr
Hallo

probiere es mal mit diesem Script. Notepad örffnen, hineinkopieren, Name vergeben mit der Endung .vbs.

Es ist wichtig, daß außer den PDF-Dateien keine anderen Dateitypen z.B. die bericht.txt oder rename.log (wird hier verwendet um die umbenannten Dateien aufzulisten) in diesem Verzeichnis abgelegt sind.

Script.Name = ren_dat_fo.vbs
-------------------------------------------------------------------ab hier kopieren
'bericht.txt und rename.log dürfen nicht im Ordner der PDF-Dateien liegen

Set fs = CreateObject("Scripting.FileSystemObject")
p_1 = "Verzeichnispfad" 'Hier den echte Pfad des PDF-Ordners rein
Set f1 = fs.GetFolder(p_1)
Set fn = fs.OpenTextFile("Verzeichnispfad\rename.log", 2, True) 'Hier Pfad wo rename.log abgelegt werden soll
fn.WriteLine "Liste der umbenannten Pdf-Dateien 1. neuer Name / 2. alter Name"
fn.WriteBlankLines(1)
ren_pdf anz_fils
WScript.Echo "Das Script ist beendet!!" & vbLf & "soweit alle PDF-Dateien in bericht.txt erfaßt sind" & vbLf & "sind auch alle Dateien unbenannt"
WScript.Quit

Sub ren_pdf(anz)
Dim j,f_na,dat,a_n
For Each file in f1.Files
f_na = left(file.Name, 6)
Set f = fs.OpenTextFile("Verzeichnispfad\bericht.txt", 1) 'hier den Pfad der bericht.txt eintragen
do
dat = f.ReadLine
If 0 < InStr(dat, f_na) Then
a_n = file.Name : Set datei = file
datei.Name = left(dat, 6)&".pdf"
fn.WriteLine datei.Name & " " & a_n
f.Close
Exit do
End If
Loop Until f.AtEndOfStream
j = j + 1
If j = anz Then
Exit For
End If
Next
End Sub

Function anz_fils
Dim i,dat
i = 0
For Each file in f1.Files
:i = i+1
Next
anz_fils = i : i = ""
End Function
----------------------------------------------------------------------------bis hier


MfG maneich
Bitte warten ..
Mitglied: eeleater
16.03.2007 um 12:41 Uhr
danke, aber mit batch funktioniert es schon so!

trotzdem danke, dass du dir die mühe gemacht hast!!
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Mehrere PDF-Dateien per Batch zusammenfügen (1)

Frage von Grimmli zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Drucker und Scanner
Problem mit Ausdruck von PDF Dateien (4)

Frage von CountryBoy zum Thema Drucker und Scanner ...

Viren und Trojaner
gelöst "Gefährlichkeit" von PDF-Dateien (8)

Frage von thaefliger zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...