Mit Variablen aus Java in DOS arbeiten können

GaanSan

Grünschnabel
Ich habe hier das Programm geschrieben:


Code:
public class MainClass {

	public static void main(String[] args){
	
    try {
		JSAP jsap = new JSAP ();

		FlaggedOption valueOpt = new FlaggedOption ("value", 
				new StringStringParser (), 
				"1000", true, 'v', "value");
		
		
		jsap.registerParameter (valueOpt);

		JSAPResult progArgs = jsap.parse (args);
		
		//sValue = enthällt "1000"
		String sValue = progArgs.getString ("value");
		System.out.println(sValue);
		
		//Umwandlung vom sValue zu einem Integer
		int iVal = Integer.parseInt(sValue);		
		iVal = iVal * 2;
		
		//Programm Ende, Wert wird zurückgegeben
		System.exit(iVal);
		
	} catch (JSAPException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	}
}

Danach erstelle ich eine Jar-Datei aus dem Projekt: MainClass.jar,
mit Shellscript erstelle ich eine cmd-Datei, Name der cmd-Datei ist start.cmd:

java -classpath ./MainClass.jar;"l:/lib/JSAP_1.03a.jar" MainClass -v "1000"

Nach dem Ausführen der start.cmd, wird die 1000 angezeigt:


C:\Dokumente und Einstellungen\Desktop>java -classpath ./MainClass.jar
;"l:/lib/JSAP_1.03a.jar" MainClass -v "1000"
1000

C:\Dokumente und Einstellungen\fschlee\Desktop>PAUSE
Drücken Sie eine beliebige Taste . . .

Was ich jetzt machen möchte, ist mit dem Rückgabewert (iVal) im DOS weiter arbeiten zu können!

hier bei der Aufgabe wäre es der Wert 2000, enstanden aus iVal = iVal * 2

Wer mir weiterhelfen kann bitte posten ;)

Danke
 
was noch wichtig ist, du musst dein Java Programm im Skript mit "call java ..." aufrufen, damit dein Skript auf den Rückgabewert wartet und diesen in der Systemvariable ERRORLEVEL speichert.

//Edit
es tut auch so wie du es hast, ohne call, die java.exe wird in der selben konsole ausgeführt und keine neue gestartet. Ich würde aber der Übersichthalber das call trotzdem einbauen. :)
//Edit ende

Gruß
Flo
 
Zuletzt bearbeitet:
Danke für die Antworten ;)

kurz wegen dem call Java, wie würde es denn aussehen?
könntest du bitte ein Beispiel dafür geben, wäre wirklich hilfreich.

Wenn es im Errorlevel gespeichert wird, kann ich dann mit dem Wert in irgend einer Art weiterarbeiten, im DOS ?

Danke
 
statt

java -classpath ./MainClass.jar;"l:/lib/JSAP_1.03a.jar" MainClass -v "1000"

einfach

call java -classpath ./MainClass.jar;"l:/lib/JSAP_1.03a.jar" MainClass -v "1000"

Mit dem Errorlevel kannst du unter DOS wie mit jeder anderen Umgebungsvariable weiter arbeiten. Das ist dann aber DOS Skripting und kein Java mehr. :)

z.B.

IF ERRORLEVEL 1 ECHO FEHLERCODE war 1
 
Zurück