Per Batch Programme ausführen und Dateien umbenennen
Hallo,
ich habe folgendes Problem:
Ich will ein Javaprogramm ausführen, dessen Parameter sind 100 html Seiten aus einem Ordner.
Der Java-Aufruf sieht folgendermaßen aus:
java -cp .;c:\programme\aspectj\lib\aspectjrt.jar org.htmlcleaner.CommandLine src=website.htm
Ausgabe dieses Programmes ist IMMER eine Datei namens trace.xml, diese soll dann umbenannt werden in 1.xml bis 100.xml
Ich hab mir also eine Batch-Datei geschrieben, die in einer FOR Schleife das Programm mit allen Webseiten aus einem Ordner aufruft und danach abhängig von einem Zähler die Datei umbenennt. Allerdings klappt es nicht.
Nur die erste Datei wird umbenannt in 1.xml. Der Zähler wird scheinbar nicht richtig hochgesetzt, bleibt immer bei 1 und somit schlägt das umbennen immer fehl. Hat jemand eine Idee, wie es funktionieren könnte?
Das hier ist bis jetzt mein Ansatz:
set i=1
FOR %%f IN (HTMLDateien\*.htm) DO (java -cp .;c:\programme\aspectj\lib\aspectjrt.jar org.htmlcleaner.CommandLine src=%%f
ren trace.xml %i%.xml
set /A i=%i%+1)
Danke schonmal
ich habe folgendes Problem:
Ich will ein Javaprogramm ausführen, dessen Parameter sind 100 html Seiten aus einem Ordner.
Der Java-Aufruf sieht folgendermaßen aus:
java -cp .;c:\programme\aspectj\lib\aspectjrt.jar org.htmlcleaner.CommandLine src=website.htm
Ausgabe dieses Programmes ist IMMER eine Datei namens trace.xml, diese soll dann umbenannt werden in 1.xml bis 100.xml
Ich hab mir also eine Batch-Datei geschrieben, die in einer FOR Schleife das Programm mit allen Webseiten aus einem Ordner aufruft und danach abhängig von einem Zähler die Datei umbenennt. Allerdings klappt es nicht.
Nur die erste Datei wird umbenannt in 1.xml. Der Zähler wird scheinbar nicht richtig hochgesetzt, bleibt immer bei 1 und somit schlägt das umbennen immer fehl. Hat jemand eine Idee, wie es funktionieren könnte?
Das hier ist bis jetzt mein Ansatz:
set i=1
FOR %%f IN (HTMLDateien\*.htm) DO (java -cp .;c:\programme\aspectj\lib\aspectjrt.jar org.htmlcleaner.CommandLine src=%%f
ren trace.xml %i%.xml
set /A i=%i%+1)
Danke schonmal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95052
Url: https://administrator.de/forum/per-batch-programme-ausfuehren-und-dateien-umbenennen-95052.html
Ausgedruckt am: 25.04.2025 um 20:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo nexxtt!
Grüße
bastla
War es diese verzögerte Variablenbelegung?
Ja. Ohne "delayedExpansion" wird der Wert von Variablen nur am Beginn einer Schleife ermittelt - Du kannst zwar den Variableninhalt innerhalb der Schleife verändern, aber ohne ausdrücklilche Aufforderung (nämlich die Variablen "verzögert" - also jeweils erst dann, wenn sie gerade benötigt werden - auszuwerten) interessiert das den Interpreter überhaupt nicht.Grüße
bastla
Hallo nexxt!
Für mich sieht Dein Code schon ganz vernünftig aus - soferne die "diff.exe" gefunden werden kann (da ihr Verzeichnis in %path% eingetragen ist bzw sie im aktuellen Ordner liegt), sollte das eigentlich klappen ...
Falls doch nicht, kannst Du zum Debuggen zunächst einmal aus dem "echo off" ein "echo on" machen und so die Befehle (mit aufgelösten Variablen) vor der Ausführung anzeigen lassen. Wenn Du beim Aufruf der Batchdatei noch eine Umleitung der Ausgabe (auch von Kanal 2 = STDERR) hinzufügst, kannst Du diese Ausgaben auch als Textdatei erhalten, zB
Grüße
bastla
P.S.: In diesem Forum erreichst Du die Formatierung als Code mit <> anstelle von
Für mich sieht Dein Code schon ganz vernünftig aus - soferne die "diff.exe" gefunden werden kann (da ihr Verzeichnis in %path% eingetragen ist bzw sie im aktuellen Ordner liegt), sollte das eigentlich klappen ...
Falls doch nicht, kannst Du zum Debuggen zunächst einmal aus dem "echo off" ein "echo on" machen und so die Befehle (mit aufgelösten Variablen) vor der Ausführung anzeigen lassen. Wenn Du beim Aufruf der Batchdatei noch eine Umleitung der Ausgabe (auch von Kanal 2 = STDERR) hinzufügst, kannst Du diese Ausgaben auch als Textdatei erhalten, zB
DeinBatch.cmd>BatchLog.txt 2>&1
Grüße
bastla
P.S.: In diesem Forum erreichst Du die Formatierung als Code mit <> anstelle von