Übergabe eines Befehls an Dos-Box

Fabian83

Mitglied
Hallo zusammen,

ich habe ein Problem bei der Übergabe von Befehlen an eine DOS Box, die über ein Java Programm geöffnet wurde.
Ich würde gerne einfach einen String ( etwa in der Art "\Programmname<Inputfile_für_Programm") übergeben um ein Fortran Programm mit Übergabeparametern zu starten.Es wird jedoch, wenn ich dies übergebe, nur das Programm ausgeführt ohne den Input.
Es macht also keinen unterschied ob ich nur "\Programmname" oder "\Programmname<Inputfile_für_Programm" schreibe.

Java:
       File WKD = new File(D:\Ordner1\);
	ProcessBuilder p = new ProcessBuilder("cmd", "/c", "start",[B]"Programmname"[/B]);
//so klappt es, allerdings klappt der Befehl "Programmname<Inputfile" welcher unter DOS korrekt ist nicht
			p.directory(WKD);
			p.start();
[code=Java]

Vieln Dank für die Hilfe!
 

Marco13

Top Contributor
Ins blaue geraten: Vielleicht noch Anführungszeichen oder so...?
Vorher
String s = "programm < inputFile";
Nachher sowas wie
String s = "\"programm < inputFile\"";

(BTW: Ich hab' den Processbuilder noch nie isoliert verwendet, sonst nur gelgentlich Runtime.exec(...) ...)
 

KrokoDiehl

Top Contributor
Ich habe es nun auch nicht probiert aber ich rate mal ins Blaue:
Wenn man
Code:
programm < eingabe.txt
schreibt so biegt man die
Code:
stdin
vom Programm auf die genannte Datei. Wenn du das über Java ausführst, dann "schnappt" sich die VM ggfs die
Code:
stdin
, sprich das "< eingabe.txt" ist wirkungslos?

Mit Java7 hat der ProcessBuilder aber auch
Code:
redirectXXX()
-Methoden. Du könntest probieren hierüber die eingabe.txt anzugeben.
 

Fabian83

Mitglied
@ Marco: Das hat leider nichts genützt, trotzdem Danke.
Ich habe jetzt das Problem gelöst und zwar über einen thread der die Kontrolle der cmd-Box an die Java Console umleitet. Den Code habe ich übernommen, deswegen ist er mir nicht ganz klar. Vielleicht kann mir hier einer weiterhelfen. Ich rufe von meiner Gui bei einer bestimmten Eingabe den Code unten auf, der dann über cmd wiederum das gewünschte Programm aufruft.
Nun würde ich gern bei beenden des Programms, d.h. cmd steht wieder auf dem Working Directory, die Kontrolle zurück an meine GUI geben. Momentan funktioniert das nicht.
Java:
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;


public class InnExec {
	String wkdir;
	static String ActCommand;//Das Programm das ausgeführt werden soll, Übergabe von GUI
	static String InFile;
	
	InnExec(String wkdir, String ActCommand, String InFile) {
		InnExec.ActCommand=ActCommand;
		this.wkdir=wkdir;
		InnExec.InFile=InFile;
	}
	public void Run() throws IOException, InterruptedException {
	File wkdir=new File(this.wkdir);
	  ProcessBuilder processBuilder = new ProcessBuilder("cmd.exe").redirectErrorStream(true);
	  processBuilder.directory(wkdir);
	  Process process = processBuilder.start();
	  
  createAndStartProcessOutputHandlerThread(process);
  Thread processInputHandlerThread = createAndStartProcessInputHandlerThread(process);
  process.waitFor();
  processInputHandlerThread.interrupt();
	}
	private static Thread createAndStartProcessInputHandlerThread(final Process process) {
	    Thread thread = new Thread(new Runnable() {
	      public void run() {
	        PrintWriter printWriter = new PrintWriter(process.getOutputStream());
	        //Scanner scanner = new Scanner(System.in);
	        try {
	            printWriter.println(ActCommand+"<"+InFile);
	            printWriter.flush();
	            Thread.sleep(50);
	          }
	         catch (InterruptedException interruptedException) {
	          // ignore Process shutdown
	        }
	        
	      }
	    });
	    thread.start();
	    return thread;
	  }
	 
	 
	  private static Thread createAndStartProcessOutputHandlerThread(final Process process) {
	    Thread thread = new Thread(new Runnable() {
	      public void run() {
	        try {
	          char c = Character.MAX_VALUE;
	          while ((c = (char) process.getInputStream().read()) != Character.MAX_VALUE) {
	           System.out.print(c);
	           // Ausgabe auf Java Console
	          }
	          System.out.print(c);
	        } catch (IOException e) {
	          e.printStackTrace();
	        }
	      }
	      
	    });
	    thread.start();
	    return thread;
	  }
	 
}
 

turtle

Top Contributor
cmd steht wieder auf dem Working Directory, die Kontrolle zurück an meine GUI geben. Momentan funktioniert das nicht.

Das ist keine Fehlerbeschreibung;)

Ich auch mal auf's Blaue raten.

Wenn das externe Programm in der Kommandozeile fertig ist, läuft danach aber immer noch die CMD-Shell. Das Java-Programm wartet darauf, dass dieses beendet wird (waitFor). Also die Shell über exit beenden, dann müsste auch die GUI weitermachen.

Oder cmd /c <Kommando> aufrufen, dann beendet sich die Shell automatisch nach Abarbeitung von <Kommando>
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
J Methoden per Übergabe eines "Methodennamen-Strings&quot Allgemeine Java-Themen 20
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
K ursprüngliche ArrayList ändert sich bei Übergabe in Methode Allgemeine Java-Themen 18
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
W Zugriff auf Objektvariablen vs. Übergabe Allgemeine Java-Themen 3
kodela Übergabe einer Referenz Allgemeine Java-Themen 20
X Übergabe ... args Allgemeine Java-Themen 5
S OOP this-Referenz als Konstruktor-Übergabe Allgemeine Java-Themen 8
J Übergabe von post request Parametern Allgemeine Java-Themen 9
nutellastulle Zugriff, Übergabe, Bearbeitung und Ausgabe von Jlist Allgemeine Java-Themen 6
M Übergabe mehrer Files an selbstprogrammieren Parser Allgemeine Java-Themen 4
A Problem bei Übergabe von Werten in ein double Array. Allgemeine Java-Themen 21
S Übergabe / Aufruf einer beliebigen Methode in einer anderen Allgemeine Java-Themen 9
W Threads & Pipes --> Ist eine Übergabe von Objekten mö Allgemeine Java-Themen 7
P Übergabe- Parameter SQL Map Allgemeine Java-Themen 45
M Übergabe von Referenzen Allgemeine Java-Themen 3
G Probleme bei String Übergabe um Public Key zu erzeugen ? Allgemeine Java-Themen 6
R Übergabe und Autostart von Paint Allgemeine Java-Themen 4
V Übergabe per Referenz. Allgemeine Java-Themen 5
L Array Übergabe Allgemeine Java-Themen 8
G Übergabe funzt nicht, aber wieso? Allgemeine Java-Themen 3
lhein Übergabe von Objekten von Java an C über JNI Allgemeine Java-Themen 5
C Übergabe Parameter verändert Allgemeine Java-Themen 5
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
RalleYTN DPI eines Bildes ändern Allgemeine Java-Themen 4
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
A einmalige Ausführung eines Methodenabschnittes Allgemeine Java-Themen 3
F CPU Last eines Thread ausfindig machen Allgemeine Java-Themen 0
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
F Teil eines Bildes laden Allgemeine Java-Themen 1
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
RalleYTN Input/Output URL eines Zip Entry? Allgemeine Java-Themen 2
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
J NullPointerExeption bei Inizialisierung eines Arrays Allgemeine Java-Themen 3
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben