# Java-Programm aus CMD ausführen mit Parametern



## Ferdinant (5. Okt 2013)

Hallo Leute,

ich habe ein Problem, dass mich seit einigen Tag herumtreibt und auch nach intensiver Recherche hier im Forum bis jetzt nich lösen lies.

Ich habe ein relativ großes Java-Programm geschrieben, dass mithilfe einer GUI bedient werden kann. Da ich das Java Tool nun jedoch öfters nutze, wäre es praktibaler, anstatt mit der GUI, gleich im CMD zu arbeiten. 

Ich stehe jedoch auf dem Schlauch, wie ich mein jetziges Programm anpasse, um es aus dem CMD zu starten. Der Hase im Pfeffer liegt darin, dass ein einfaches starten aus dem CMD nicht ausreicht. Vielmehr müssen im CMD Parameter eingeben und mithilfe dessen dann eine Prozedur ausgeführt werden. 

Konkret sollte das so aussehen.
CMD-Fenster:

Start java Parameter 1 Parameter 2 Parameter 3 

Nach Ausführung dieser Befehlszeile soll dann das entsprechende Ergebnis (eine Textdatei) in einem entsprechend Verzeichnis erstellt werden. 

Wie gehe ich an so eine Sache heran? Hat womöglich jemand einen Tipp für ein Minimalbeispiel? Bis jetzt habe ich mir einfach eine .jar mithilfe von Eclipse erstellen lassen. Damit ist mir jedoch nicht mehr geholfen.

Ich danke schon jetzt für Hilfe.

Ferdi


----------



## Lars789852 (5. Okt 2013)

Hallo,

die jar Datei kannst du ganz einfach starten, indem du den java -jar DeineJarDatei.jar in der Konsole eingibst. Parser für die Parameter gibt es, einfach mal nach "java cmd parameter parser" googeln.

Du kannst es auch so machen, dass du die Eingaben von der Konsole ausliest. Du kannst z.B. mit einem java.util.Scanner, der von System.in liest, eine Nutzereingabe von der Konsole auslesen. Das Eingegebene kannst du dann mit einem switch-case verarbeiten.

```
import java.util.Scanner;
class Test {
  public static void main(String [] args) {
    System.out.println("Befehl eingeben:");
    Scanner scanner = new Scanner(System.in);
    String befehl = scanner.nextLine();
    switch(befehl) {
      case "befehl1": {
        // mache etwas
        break;
      } case "befehl2": {
        // mache etwas anderes;
        break;
      default: {
        System.err.println("Befehl " + befehl + " nicht erkannt!");
      }
    }
    scanner.close();
  }
}
```


----------



## ARadauer (5. Okt 2013)

Parameter 1 Parameter 2 Parameter 3  befinden sich im args Array von 
public static void main(String [] args) 
einfach drauf zugreifen...


----------



## Ferdinant (8. Okt 2013)

Humm... irgendwie klapp es nicht. 

Machen wir es mal konkret: Das ist meine Startprozedur:


```
public class StartMain {
 
	public static void main(String[] args) {
					MyTags logic = new MyTags ("C:/Desktop/test.html", "www.java-forum.de", "C:/Desktop/test.xml");
			        logic.run();
				
			}
}
```

Die 3 Pfade hinter MyTags sollen die Parameter sein.

Ich möchte nun in der Eingabeauforderung von Windows "einfach" sowas eingeben wie:
Start Java C:/Desktop/test.html www.java-forum.de C:/Desktop/test.xml
und dann soll es losrennen und eine Datei auf den Desktop schreiben.

Das ganze als Abfrage zu gestalten frisst bei der Verwendung zu viel Zeit.

Danke schon jetzt.


----------



## HarleyDavidson (8. Okt 2013)

Naja wie vorhin erwähnt, die Parameter sind im args[] Array:


```
public static void main (String[] args){
 if (args.length==3)
 {
  String zielhtml = args[0];
  String url = args[1];
  String zielxml = args[2];

 //Programmablauf mit den Variablen zielhtml, url und zielxml
 } else {
  System.out.println("Applikation benötigt 3 Parameter");
 }
}
```

Starten kannst du das Programm dann in der CMD. Du gehst in den Ordner, wo die Java-Datei liegt und gibts dann ein:


```
java MeinProgramm C:/Desktop/test.html www.java-forum.de C:/Desktop/test.xml
```

Eine JAR rufst du ähnlich auf:


```
java -jar MeinProgramm.jar C:/Desktop/test.html www.java-forum.de C:/Desktop/test.xml
```

Ich hoffe, das hilft dir weiter!

Viele Grüße,

Harley


----------



## Ferdinant (8. Okt 2013)

Ahhhhhh.... sehr schön. Das klappt super. Vielen Dank!

Allerdings einen hat die Sache noch einen Schönheitsfehler: Die .jar muss ja, wie geschrieben, immer in dem gewählten Ordner liegen. Wo kann ich es unterbringen, dass die .jar in einem festen Verzeichnis liegt? (Bpsw. unter C:\Programme\tool)

Echt toll, wie schnell einem hier geholfen wird. Hut ab!


----------



## Bqg_stylo (8. Okt 2013)

Hallo,
Ich würde es mit einer batchdatei machen.
(Einfach Texteditor starten,cmd Befehle rein und als .bat speichern)

Die Zeile müsste so funktionieren.


```
java -jar C:/meinPfad/MeinProgramm.jar C:/Desktop/test.html [url]www.java-forum.de[/url] C:/Desktop/test.xml
```


----------



## HarleyDavidson (9. Okt 2013)

Eine Batchdatei ist ein guter Ansatz.
Damit kannst du die eigentliche JAR in einen festen Ordner setzen und mit der Batchdatei aufrufen.

Probier mal die hier:


```
@echo off 
Set /P html=HTML: 
Set /P URL=URL: 
Set /P XML=XML: 
pause
java -jar C:/meinPfad/MeinProgramm.jar %HTML% %URL% %XML%
pause
```

Schreib das in eine txt-Datei, abspeichern. Danach änderst du die Dateiendung in .bat und startest sie.

Im Kommandofenster wirst du nun zuerst nach der HTML, dann nach der URL und danach nach der XML gefragt.
Nach einem weiteren Tastendruck werden die Parameter automatisch an den Programmaufruf der jar übergeben.

Ist das so etwa das, was du dir vorgestellt hast?


----------

