chris1979
Goto Top

PDF Dateien nach Inhalt einer TXT Datei umbenennen

Hallo zusammen,

ich stehe gerade vor einem Problem und hätte eine Frage zur Umsetzung.
Ich bin mit der Batch Programmierung nicht wirklich vertraut.

Folgendes Problem:
Ich erzeuge dynamisch 17 PDF Dateien die alle nach der Syntax "xxx000.00xx1_000.pdf aufgebaut sind
Der Dateiname ist immer 16 stellig.
Die hintere 3 stellige Zahl zählt dabei nach oben (also 1. PDF = 001, 2.PDF = 002, usw)

In einer Textdatei im gleichen Verzeichnis stehen in den ersten 17 Zeilen Wörter, die diese PDF Dateien bekommen sollen.
Danach kommt noch dynamisch unendlich lang, irgendwas anderes, dass ich aber nicht brauche.

Die Textdatei sie wie folgt aus:
Zeile 1: xxx000.00xx0 _ABC_ 000
Zeile 2: xxx.000.00xx0 _DEF_ 000
Zeile 3: xxx.000.00xx0 _GHI_ 000
usw.

(Wichtig ist hier, dass die Blöcke in 3 Teile unterteilt sind, mit jeweils einem Leerzeichen dazwischen. Der Dateiname soll aber natürlich ohne die Leerzeichen erzeugt werden)

Ich möchte gerne erreichen, dass die erste PDF Datei eben mit der ersten Zeile der TXT Datei umbenennt wird, 2. PDF mit 2. Zeile usw. bis alle 17 Dateien umbenannt wurden.

Was noch zu erwähnen ist:
Der Name der Textdatei ist dynamische, stimmt aber immer mit den ersten 12 Stellen der PDF's überein (also: xxx000.00xx0). Der Inhalt aber immer identisch.

Könnt ihr mir helfen hier eine Lösung zu bekommen?

Edit: Betriebsystem ist Win7.

Vielen Dank bereits im Voraus!

Chris

Content-Key: 233307

Url: https://administrator.de/contentid/233307

Printed on: April 19, 2024 at 03:04 o'clock

Member: bastla
Solution bastla Mar 21, 2014 updated at 17:54:48 (UTC)
Goto Top
Hallo Chris1979 und willkommen im Forum!

Wenn ich das einigermaßen richtig verstanden haben sollte, könnte das etwa so gehen:
@echo off & setlocal enabledelayedexpansion
set "Ordner=D:\Ordner mit den pdf-Dateien"  
set "Dateien=???000.00???_*.pdf"  

pushd "%Ordner%"  
for /f "tokens=1-4 delims=._" %%a in ('dir /b "%Dateien%" 2^>nul') do (  
    set "Datei=%%a.%%b.txt"  
    if exist "!Datei!" (  
        set /a Nr=1%%c-1000
        for /f "tokens=2-4 delims=: " %%i in ('findstr /n "." "!Datei!"^|findstr /b "!Nr!:"') do echo ren "%%a.%%b_%%c.%%d" "%%i%%j%%k.%%d"  
    )
)
popd
pause
Solange in Zeile 10 das "echo" vor dem "ren" steht, werden (zum Testen) die Umbenenn-Befehle nur angezeigt - wenn das Testergebnis sinnvoll aussieht, einfach dieses "echo" entfernen ...

Sollte übrigens die Textdatei nicht den Dateityp ".txt" haben, wäre die Zeile 7 entsprechend anzupassen.

Grüße
bastla
Member: Chris1979
Chris1979 Mar 21, 2014 at 17:55:40 (UTC)
Goto Top
Hallo bastla,

perfekt das funktioniert wunderbar.

VIELEN VIELEN DANK!

Grüße
chris