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
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, 9189 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 ..
Ä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
Batch Datei: PDF Dateien verschieben, umbenennen und löschen
gelöst Frage von F0rcehunterBatch & Shell4 Kommentare

Hallo zusammen, ich versuche mich gerade an einer Batch, die folgende Arbeitsschritte durchführen soll: In dem Ordner "C:\Produktdaten_zur_Uebernahme" befinden ...

Batch & Shell
PDF Datei umbennen aus TXT File ?
gelöst Frage von BotpennerBatch & Shell18 Kommentare

Hi, ich habe folgendes Problem. Ich besitze mehrere PDF-Dateien. Diese haben aktuell als Dateinamen eine belibige 6 Stellige Nummer. ...

Batch & Shell
Per Batch eine XLS-Datei in eine TXT-Datei umwandeln
Frage von skiing69Batch & Shell5 Kommentare

Hallo Wissende, ich möchte täglich automatisiert, ohne das Programm Excel zu öffnen, eine XLS-Datei in eine TXT-Datei (Feldtrennzeichen als ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 5 StundenWindows 101 Kommentar

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 7 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 21 StundenInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server16 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...