Ausführen mehrzeiliger batches

qwer1234

Mitglied
Servus

ich hab mal ne Frage zum ausführen von batch dateien:

Eine mehrzeilige bat datei, die so ähnlich ausschaut will ich auführen und zwar mit processBuilder.

Java:
set DB_USER=user
set DB_PASSWORD=pass
set FILES_HOME=C:\Projekte\project\srcjava\project
set JARS=%FILES_HOME%\testclasses
set JARS=%JARS%;%FILES_HOME%\..\projectlib\project.jar
set RUNNING_CLASS=project.test.DummyApp
REM Change directory
cd %FILES_HOME%
REM Run it
start java -classpath %JARS% %RUNNING_CLASS% -processName DummyApp

Kann ich die wegen offenbar zeilenweiser abarbeitung nur mit
Java:
try {
                    ProcessBuilder builder = new ProcessBuilder();
                    builder.command("cmd", "/C", file.getAbsolutePath());
                    Process p = builder.start();
                    Scanner s = new Scanner(p.getInputStream(), "UTF-8");
                    while (s.hasNext()) {
                        s.next();
                    }
                    s.close();
} catch (IOException ex) {
                    throw new RuntimeException("could not launch " + file.getName());
}
ausführen, oder gibt es eine Möglichkeit, ohne den Scanner die ganze Sache ins Laufen zu bringen?

wenn ich den bat text umbaue und alles in einer Zeile steht würds auch funktionieren...
 
Ich weiß das hilft immer wenig, aber bei mir gehts... Ich habe auch eine .bat datei die paar sachen compiliert und kopiert etc. die hat ja auch mehr zeilen. Ich mach das mit der Runtime.exec.

Allerdings sieht mein Aufruf so aus

Java:
Process p = Runtime.getRuntime.exec("mybat.bat");

ohne das "cmd" und "\c"

Ich hab mir dann über den Stream vom Process die ausgabe der batch-Datei auf die Konsole geholt.
 
Ich hab jetzt eine Lösung für das ganze. Zwar nicht 100% optimal, aber funktioniert:

Und zwar:

der Aufruf bleibt bei
Java:
ProcessBuilder builder = new ProcessBuilder();
                    builder.command("cmd", "/C", file.getAbsolutePath());
                   builder.start();

und in die batch Datei baut man am Anfang noch ein @echo off ein

Java:
@echo off
set DB_USER=user
set DB_PASSWORD=pass
set FILES_HOME=C:\Projekte\project\srcjava\project
set JARS=%FILES_HOME%\testclasses
set JARS=%JARS%;%FILES_HOME%\..\projectlib\project.jar
set RUNNING_CLASS=project.test.DummyApp
REM Change directory
cd %FILES_HOME%
REM Run it
start java -classpath %JARS% %RUNNING_CLASS% -processName DummyApp

und schon läuft das ganze 🙂
 

Zurück
Oben