Wenn man - wie ich - öfter mal vor einer Linux-Maschine sitzt, vergisst man gerne ganz schnell die einfachsten Windows-Basics. In diesem Fall war mein Problem, wie starte ich ein Java-Programm mittels eines Batch-Scriptes, ohne dabei gleichzeitig ein Kommandozeilenfenster anzuzeigen?

Im konkreten Fall handelte es sich um ProjectLibre, dem mehr oder weniger offiziellen Nachfolger von OpenProject und Ersatz von Microsoft Project.

Da bei mir lediglich das JDK installiert ist und Java somit nicht in der Umgebungsvariable Path enthalten ist, musste eine kleine Batch-Datei her.

Erster Versuch

@echo off
set JAVA="C:\Program Files\Java\jdk1.7.0_40\bin\javaw"
%JAVA% -Xms128m -Xmx768m -jar projectlibre.jar

Java Batch-Datei Hmm...Kommandozeilenfenster.

Zweiter Versuch

Versuchen wir es mit dem Befehl start.

@echo off
set JAVA="C:\Program Files\Java\jdk1.7.0_40\bin\javaw"
start %JAVA% -Xms128m -Xmx768m -jar projectlibre.jar

Java Batch-Datei

OK, mit der Fehlermeldung habe ich jetzt nicht gerechnet. Wenn man sich jedoch die Hilfe zu dem Befehl mittels start /? anschaut, wird schnell klar was da passiert ist:

C:\Users\Witi>start /?
Startet ein eigenes Fenster, um ein bestimmtes Programm oder einen Befehl
auszuführen.
START ["Titel"] [/D Pfad] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
     [/LOW | /NORMAL | /HIGH | /REALTIME] | /ABOVENORMAL | /BELOWNORMAL]
     [/NODE ] [/AFFINITY ] [/WAIT] [/B]
     [Befehl/Programm]
     [Parameter]
 "Titel"       Der Titel des neuen Fensters.
 Pfad          Startverzeichnis.
 B             Startet Anwendung, ohne ein neues Fenster zu öffnen. Die
               Anwendung ignoriert STRG+C. Wenn die Anwendung nicht
               selbständig STRG+C überprüft, ist STRG+UNTBR die einzige
               Möglichkeit, um die Anwendung abzubrechen.

Der Variable %JAVA% wurde als Titel interpretiert und erst der Parameter -Xms128m als eigentlicher Befehl.

Lösung

Somit ist es klar, wie das finale Script aussehen kann:

@echo off
set JAVA="C:\Program Files\Java\jdk1.7.0_40\bin\javaw"
start "" %JAVA% -Xms128m -Xmx768m -jar projectlibre.jar

Einfach einen leeren Titel übergeben - wir werden ja sowieso nichts sehen - und fertig!

blogroll
tags