# Befehlsparameter über cmd mitgeben



## Hutmacher (2. Apr 2009)

So, ich habe ja nun mein Programm geschrieben, das in regelmäßigen Abständen die Windowstaste drückt. Das Intervall soll aber nicht immer gleich sein, sondern über eine Variable _interval_ erfolgen.
*
Was ich versuchen möchte:
*
Den Dateinamen (natürlich auf der richtigen Ebene) einzugeben, und die Variable mitübergeben.





Dass ich also wie bei einer .BAT-Datei einen Befehlsparameter mit angeben kann.

*(Wie)Kann man das realisieren?*


----------



## Gelöschtes Mitglied 5909 (2. Apr 2009)

das String array args enthält genau diese parameter
=> auslesen und damit machen was du willst


----------



## Noctarius (2. Apr 2009)

Parameter ans Ende der Commandline zum Starten der Java Anwendung hängen und in der Main Methode aus dem String[] auslesen


----------



## Hutmacher (2. Apr 2009)

Noctarius hat gesagt.:


> Parameter ans Ende der Commandline zum Starten der Java Anwendung hängen und in der Main Methode aus dem String[] auslesen



Und wie starte ich es über Commandline?
Habe das schon öfter versucht, da kam ich bei Googlen etc. auf Codes wie
_javac classpath
java bla.class_
und noch mehr, aber alles hat nicht richtig funktioniert!


----------



## Noctarius (2. Apr 2009)

```
java --cp .:WEITERE_CLASSPFADE path.to.my.class.MyClass
```

für ein jar alternativ:

```
java --cp .:WEITERE_CLASSPFADE -jar MyJar.jar
```


----------



## Leroy42 (2. Apr 2009)

Hääh?


----------



## faetzminator (2. Apr 2009)

```
if (args.length < 2) {
    usage();
    System.exit(1);
}
String param = args[1];
```


----------



## Hutmacher (2. Apr 2009)

Noctarius hat gesagt.:


> ```
> java --cp .:WEITERE_CLASSPFADE path.to.my.class.MyClass
> ```
> 
> ...



Sorry, aber wenn ich ehrlich bin, versteh ich das nicht.
Ich habe hier mal einen Überblick für meine Klassen gemacht.
Was müsste ich jetzt bei CMD eintippen, um mein Programm zu starten und den Parameter _5000_ zu übergeben?


----------



## faetzminator (3. Apr 2009)

Wenn du eine Klasse ohne Abhängigkeiten ausserhalb des Workspaces hast (keine jars etc) dann:

```
java de.hutmacher.irgendwas.BeispielKlasse <parameter, zB 5000>
```
Wenn du ein Jar gemacht hast

```
java -jar meineJarDatei.jar <parameter, zB 5000>
```

wenn du Eclipse verwendet, kannst du unter "Run..." die Parameter in ein Textfeld eintragen


----------



## Hutmacher (3. Apr 2009)

faetzminator hat gesagt.:


> Wenn du eine Klasse ohne Abhängigkeiten ausserhalb des Workspaces hast (keine jars etc) dann:
> 
> ```
> java de.hutmacher.irgendwas.BeispielKlasse <parameter, zB 5000>
> ...



So, das habe ich jetzt mal probiert. Ich habe eine Runnable Jar auf dem Desktop (obwohl ich nur eine JAR erstellen habe mit Eclipse, aber wayne).
Wenn ich das jetzt so eingebe, bekomme ich aber einen Syntaxfehler!


----------



## faetzminator (3. Apr 2009)

natürlich ohne die <>


----------



## Hutmacher (3. Apr 2009)

faetzminator hat gesagt.:


> natürlich ohne die <>


Aah, sag sowas doch!^^
Danke, es klappt perfekt.

Kann ich das Programm auch wieder über cmd abbrechen?

*EDIT:*
Mir ist gerade aufgefallen, dass wenn man das Programm so callt, der cmd-Bildschirm offen bleibt und dieser bei Schließen das Javaprogramm auch beendet … und das ist ja, wenn das im Hintergrund laufen soll, suboptimal. Kann ich das verhindern?


----------



## Ebenius (4. Apr 2009)

Hutmacher hat gesagt.:


> Kann ich das Programm auch wieder über cmd abbrechen?


Wäre mir neu.



Hutmacher hat gesagt.:


> Mir ist gerade aufgefallen, dass wenn man das Programm so callt, der cmd-Bildschirm offen bleibt und dieser bei Schließen das Javaprogramm auch beendet … und das ist ja, wenn das im Hintergrund laufen soll, suboptimal. Kann ich das verhindern?


"cmd /k" lässt das Fenster offen. "cmd /c" schließt es danach.

Ebenius


----------



## faetzminator (4. Apr 2009)

Hutmacher hat gesagt.:


> *EDIT:*
> Mir ist gerade aufgefallen, dass wenn man das Programm so callt, der cmd-Bildschirm offen bleibt und dieser bei Schließen das Javaprogramm auch beendet … und das ist ja, wenn das im Hintergrund laufen soll, suboptimal. Kann ich das verhindern?



Das ist OS-abhängig, unter Linux kannst du den Prozess z.B. in "screen" drücken, als Daemon starten oder einfach mit & im Hintergrund laufen lassen (falls kein Output vorhanden ist; ansonsten noch > und &>)


----------

