Befehl an CMD übergeben

-horn-

Bekanntes Mitglied
moien da bin ich wieder 🙂.

ich würde gerne befehle aus dem javaprogramm an die cmd umgebung übergeben und am liebsten auch die antworten wieder einlesen lassen.
das ganze soll zwar auf linux befele übergeben, aber da ich das auf windows und netbeans mache würde ich zur überprüfung das auch hier testen ohne jedes mal das OS zu wechseln.

so, ein kumpel hat mir was gezeigt, das auch hierrauf basiert
Running system commands in Java applications | java exec example | devdaily.com
und es soll auf linux gehen. wenn ich aber den befehl auf "dir" ändere, um das aktuelle verzeichnis einzulesen, dann gibt es fehlermeldungen.
wenn ich als neuen test "notepad test.txt" ausführe, dann klappt es und notepad öffnet sich mit leerer seite undfragt mich, wohin ich die nicht gefundene, neue datei speichern möchte.

ich würde jetzt gerne wissen, warum der eineeinfache cmd befehl nicht geht, aber das zweite schon?

grüße,

Andreas
 
moien,

hey cool, funktioniert! es geht auch ohne .exe, aber wofür stehtdas /C ist das für den laufwerkspuchstaben, wo cmd.exe ist, oder eine option?

Andreas
 
moien,

okay, schonmal danke euch.
jetzt muss ich nur noch herausfinden, wie ich mehrere zeilen befehle übergeben kann 🙂. hoffentlich steht das auch irgendwo bei google 😉
 
Nur mal so eine Idee: Du könntest das ganze als batch-Datei speichern und diese dann ausführen. ich weiß nicht, wie dabei die beste Vorgehensweise ist, war wie gesagt jetzt einfach mal eine Idee.
 
moien,

ich bin ja "leider" kein linuxkind und muss meinem javaprogramm das hier an linuxübergeben lassen

#! /bin/sh
cp download/input `bin/dir_hier_path input`
cp download/input2 `bin/dir_hier_path input2`

bin/create_work -appname worker -wu_name worker_nodelete \
-wu_template templates/worker_wu \
-result_template templates/worker_result \
input input2

WrapperApp - BOINC - Trac

Andreas
 
moien,

ich habe mal einfrage zu einem copy befehl unter linux.

Java:
p = Runtime.getRuntime().exec("cp "+FileList[1]+" `"+INPUT_DIR1+"bin/dir_hier_path "+FileList[1]+"`");

wenn ich das ausgeben lasse, dann kriege ich als fehlermeldung einen hinweis, dass meine datei, die ich eigentlich kopieren wollte, kein ordner sei.
das verstehe ich nicht, ich weiss, dass es eine datei ist, und genau die will ich kopieren lassen.

ich weiss nun nicht, ob ich was übersehe, oder was ganz anderes reinspielt. denn ich hatte es schonmal benutzt mit diesem befehl und es ging, aber es war keine zips. die zips habe ich kurz vor diesem befehl erstellen lassen und ich meine, dass der stream bereits zu sein muss. aber ich habe das gefühl, dass die dateien wärend der java-ausführung noch schreibgeschützt sind. aber nachher kann ich die löschen, also ihr seht, ich bin verwirrt.

gibt es vielleicht etwas wichtiges zu beachten, oder gibt es eine andere möglichkeit cmds zu übergeben?

Andreas
 
gibt es vielleicht etwas wichtiges zu beachten

Ja, als erstes immer den vollen Befehl wegloggen sobald er aus mehren String zusammengebaut wird:

Java:
String command = "cp "+FileList[1]+" `"+INPUT_DIR1+"bin/dir_hier_path "+FileList[1]+"`";
log.debug(command); oder System.out.println(command) oder was auch immer
p = Runtime.getRuntime().exec(command);

Dann sag mal was dabei raus kommt und was passiert wenn du genau diesen Befehl per SSH in einem Terminal ausführst. Wichtig ist ja auch in welchen Verzeichnis du grade bist wenn du relativ adressierst
 
moien fassy,

der command wird richtig ausgegeben, wenn man das per System.out.println() macht, das hatte ich schon gemacht weil ich dachte, der vergisst einen anteil des strings.
mit debug habe ich noch nicht gearbeitet, bringt das mehr infos? dann probiere ich das aus.

mit "ssh" müsstest du mir helfen, was genau du meinst, und wie das geht.

Andreas
 
Hi,

also wenn ich Deinen cp-Befehl richtig lese,

Java:
p = Runtime.getRuntime().exec("cp "+FileList[1]+" `"+INPUT_DIR1+"bin/dir_hier_path "+FileList[1]+"`");

dann fehlt dem Aufruf doch ein Separator
Code:
+INPUT_DIR1+"bin/dir_hier_path[COLOR="Red"]/[/COLOR]"+FileList[1]+
.

Und dann noch eine Frage dazu: Warum hast Du die
Code:
" `"
in Deinem Befehl?
 

Zurück
Oben