Dateiname mit hochlaufenden Index mittels Batch - Programmierung
Hallo Zusammen,
ich bin ganz neu im Bereich der Batch-Programmierung deshalb kenne ich mich kaum aus und bin auf eure Hilfe angewiesen.
Mein Ziel ist es in einer Batch-Datei eine Dateiabfrage zu starten, also zu überprüfen ob sich eine Datei im aktuellen Ordner befindet und dabei beim erstellen einer pdf-Datei ein Index hochzuzählen.
Also konkrekt macht das Programm folgendes bzw. soll folgende Funktionalität erreichen:
Das Batchprogramm konvertiert mehrere jpgs in ein pdf. Beim ersten Start des Batchprogramm soll nun eine pdf. mit dem Namen Begriff_0 erstellt werden.
0 soll hier ein Index sein und bei einem erneuten Start des Batchprogramms soll dieses nun aber erkennen, dass eine Datei (Begriff_0) mit dem Index 0 bereits vorliegt und nun
selbstständig den Index hochzählt, also eine pdf-Datei mit dem Namen Begriff_1 erzeugt.
Ich hab versucht mir ein Konstrukt aus if-Abfrage und for-Schleife zu basteln, das läuft aber noch nicht so wie erhofft.
In .\%problemid% ist die Variable abgespeichert die die Pdf-Datei als Dateinamen erhalten soll (hier im Bsp. Begriff)
Mittels C:\Program Files\ImageMagick-7.0.9-Q16\convert.exe" *.jpg rufe ich das Programm auf, welche die jpgs in ein pdf konvertiert.
Eigentlich ist eine if-Abfrage doch überflüssig, wenn man den Dateinamen kontinuierlich hochlaufen lässt oder?
Ich hoffe Ihr könnt mir dabei helfen
Vielen Dank!!
Christopher
ich bin ganz neu im Bereich der Batch-Programmierung deshalb kenne ich mich kaum aus und bin auf eure Hilfe angewiesen.
Mein Ziel ist es in einer Batch-Datei eine Dateiabfrage zu starten, also zu überprüfen ob sich eine Datei im aktuellen Ordner befindet und dabei beim erstellen einer pdf-Datei ein Index hochzuzählen.
Also konkrekt macht das Programm folgendes bzw. soll folgende Funktionalität erreichen:
Das Batchprogramm konvertiert mehrere jpgs in ein pdf. Beim ersten Start des Batchprogramm soll nun eine pdf. mit dem Namen Begriff_0 erstellt werden.
0 soll hier ein Index sein und bei einem erneuten Start des Batchprogramms soll dieses nun aber erkennen, dass eine Datei (Begriff_0) mit dem Index 0 bereits vorliegt und nun
selbstständig den Index hochzählt, also eine pdf-Datei mit dem Namen Begriff_1 erzeugt.
Ich hab versucht mir ein Konstrukt aus if-Abfrage und for-Schleife zu basteln, das läuft aber noch nicht so wie erhofft.
set /a counter=0
for %%i IN (".\%problemid%.pdf") DO (
if exist .\%problemid%.pdf GOTO WAHR
"C:\Program Files\ImageMagick-7.0.9-Q16\convert.exe" *.jpg .\%problemid%.pdf
:WAHR
"C:\Program Files\ImageMagick-7.0.9-Q16\convert.exe" *.jpg .\%problemid%_%counter%.pdf
set /a counter+=0
)
In .\%problemid% ist die Variable abgespeichert die die Pdf-Datei als Dateinamen erhalten soll (hier im Bsp. Begriff)
Mittels C:\Program Files\ImageMagick-7.0.9-Q16\convert.exe" *.jpg rufe ich das Programm auf, welche die jpgs in ein pdf konvertiert.
Eigentlich ist eine if-Abfrage doch überflüssig, wenn man den Dateinamen kontinuierlich hochlaufen lässt oder?
Ich hoffe Ihr könnt mir dabei helfen
Vielen Dank!!
Christopher
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 549176
Url: https://administrator.de/forum/dateiname-mit-hochlaufenden-index-mittels-batch-programmierung-549176.html
Ausgedruckt am: 04.04.2025 um 06:04 Uhr
2 Kommentare
Neuester Kommentar
Moin,
Zitat von @mrchris1899:
Ich hab versucht mir ein Konstrukt aus if-Abfrage und for-Schleife zu basteln, das läuft aber noch nicht so wie erhofft.
Kein Wunder, deine For-Schleife ergibt so auch keinen Sinn.Ich hab versucht mir ein Konstrukt aus if-Abfrage und for-Schleife zu basteln, das läuft aber noch nicht so wie erhofft.
Eigentlich ist eine if-Abfrage doch überflüssig, wenn man den Dateinamen kontinuierlich hochlaufen lässt oder?
So ist es. Darüber hinaus sind If-Abfragen in CMD leider auch ein Laufzeittechnischer Albtraum und sollten möglichst vermieden werden.@echo off
SetLocal EnableDelayedExpansion
set ProblemID=Begriff
set Counter=0
:: Vorhandene Dateien Zählen
for /f "Delims=" %%A in ('dir /b "%ProblemID%*.pdf"') do set /a Counter+=1
:: Neue Dateien erzeugen
for /f "Delims=" %%A in ('dir /b *.jpg') do (
"C:\Program Files\ImageMagick-7.0.9-Q16\convert.exe" "%%A" "%ProblemID%_!Counter!.PDF"
set /a Counter+=1
)