Java Programm über Batch starten

Stefan2016

Newbie
Registriert
März 2014
Beiträge
5
Guten Tag,

ich möchte eine Java Datei über eine bat oder cmd Datei starten.


Die Bat sieht bisher so aus:
start java -jar FMSCrusaderV4-70.jar -CS


Nun meine Fragen:

Wie schließt sich die Konsole automatisch, wenn das Programm gestartet wurde?
Ist es möglich, dass die Java Datei auf dem 2. Bildschirm angezeigt wird?

Mfg Stefan
 
Wenn du mehr machen möchtest, als nur ein Programm zu starten, dann ist Windows Script Host (WSH) wahrscheinlich die bessere Wahl.

Mit Run und Exec kannst du Programme ausführen. Um das Programm jedoch auf den 2ten Bildschirm zu bekommen reichen die beiden Methoden aber noch nicht aus. Ich habe auch die Erfahrung gemacht, dass kaum ein Programm auf die Parameter der Run-Methode hört, welche bestimmen, ob das Programm maximiert, minimiert usw. gestartet wird.

Hier ist mal der Code von einem Script, das ich regelmäßig verwende:

Code:
' startFiji.vbs
' Verbindet ein Netzlaufwerk und startet Fiji.
' Author: Michael Entrup
' Datum: 19.12.2013
' Version: 1.0
' ==============================
' V1.0
' - Dieses Skript basiert auf workWithImperia.vbs
' - Details zur Methode run: http://msdn.microsoft.com/en-us/library/d5fk67ky%28v=vs.84%29.aspx
' - Details zum 32Bit/64Bit Check: http://stackoverflow.com/questions/556283/how-do-i-check-if-wscript-cscript-runs-on-x64-host-os
' 

Option Explicit

Function Is64BitOS()
    Is64BitOS = Not(Is32BitOS())
End Function

Function Is32BitOS()
    Const sRegKey = "HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0"
    Const sIdentifierValue = "Identifier"
    Const sPlatformIDValue = "Platform ID"

    Dim oSh : Set oSh = CreateObject("WScript.Shell")
    Dim sIdentifier, nPlatformID

    sIdentifier = oSh.RegRead(sRegKey & "\" & sIdentifierValue)
    nPlatformID = oSh.RegRead(sRegKey & "\" & sPlatformIDValue)

    Set oSh = Nothing

    If InStr(sIdentifier, "x86") > 0 And nPlatformID = 32 Then
        Is32BitOS = True
    Else
        Is32BitOS = False
    End if
End Function

Dim FSO, Network, WS
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set Network = WScript.CreateObject("WScript.Network")
set WS = CreateObject("Wscript.shell")
Dim path, letter
path = "\\Server\Freigabe\PortableApps\Fiji.app"
letter = InputBox("Bitte einen Laufwerksbuchstaben für das Netzlaufwerk eingeben (ohne Doppelpunkt):", "Laufwerksbuchstabe")
If Len(letter) = 1 Then	
	If FSO.FolderExists(letter&":") = False Then
		Network.MapNetworkDrive letter & ":", path
		If Is64BitOS() Then
			WS.run letter&":\ImageJ-win64.exe", 3, True
		Else
			WS.run letter&":\ImageJ-win32.exe", 3, True
		End If
		Network.RemoveNetworkDrive letter & ":", false
	Else
		WScript.Echo "Das Laufwerk "&letter&": wird schon verwendet!"
	End If
Else
	WScript.Echo "Es darf nur ein Buchstabe eingegeben werden."
End If

Der Code ist etwas umfangreicher, da ich auch ein Netzlaufwerk verbinde und überprüfe, ob ich das Programm als 32bit-Version oder als 64bit-Version starten muss.
 
Zuletzt bearbeitet:
Stefan2016 schrieb:
Wie schließt sich die Konsole automatisch, wenn das Programm gestartet wurde?

wenn du start mit dem schalter /B startest, startet das java-prog im gleichen fenster.
wenn dann in der batch anschließend ein "exit" steht, wird nach beenden des progs auch die console geschlossen.

sollte den gewünschten effekt haben.
ohne gewähr, ich arbeite mich gerade noch in die materie ein. :D
 
Exit habe ich schon probiert, die Konsole bleibt weiterhin geöffnet.

Sobald ich die Konsole schließe wird auch das Programm beendet
 
hast du denn mit /B gestartet?

edit:
@unten
ja, genau so.
 
Zuletzt bearbeitet:
Mit javaw funktioniert das schließen der Eingabeaufforderung definitiv, da sich keine neue Eingabeaufforderung öffnet (wie es bei java der Fall ist). Auf den 2ten Bildschirm bekommt man die Anwendung aber nicht mit start.
 
Zuletzt bearbeitet:
Zurück
Oben