Problem beim ausführen von Batchdateien

Status
Nicht offen für weitere Antworten.

manuche

Bekanntes Mitglied
Hallo,
ich schreibe mir grad ein Programm mit dem man andere Programme ausführen kann... Für dieses Programm sollen dann Callbacks (Batch-Dateien) ausgeführt werden... Jeweils vor und nach dem eigentlichen Programm!
Dazu erzeuge ich mir einen Thread indem nacheinader die Callbacks bzw das Programm ausgeführt wird.
Da die Prozesse in Abhängigkeit von einander sind, warte ich mit prozess.waitFor() darauf, dass ein Prozess beendet wird, sodass der nächste gestartet werden kann!
Dabei taucht folgendes Problem auf: Direkt nach dem Start-Callback bleibt das Programm hängen, auch die Batch-Datei scheint nicht ordnungsgemäß ausgeführt worden zu sein, da einige Dienste unter WindowsXP nicht gestartet wurden...
Wenn ich die Batchdatei normal ausführe funktioniert dies aber...

Hier mal die Threadklasse:
Code:
public class Exec extends Thread implements Runnable{
	private Thread	controller;
	private String	start;  //Pfade auszuführenden Batch-Dateien bzw zur exe
	private String	prog;
	private String	end;

	public Exec(String start, String prog, String end) {
		this.start = start;
		this.prog = prog;
		this.end = end;
		this.controller = new Thread (this);
		this.controller.setPriority (Thread.MIN_PRIORITY);
		this.start ();
	}

	@SuppressWarnings ("static-access")
	@Override
	public void run (){
		try{
			if (start != null){
				Process p = Runtime.getRuntime ().exec (start);
				p.waitFor ();
				this.handle (p.getInputStream ());
			}
			if (prog != null){
				Process p = Runtime.getRuntime ().exec (prog);
				p.waitFor ();
			}
			if (end != null){
				Process p = Runtime.getRuntime ().exec (end);
				p.waitFor ();
				this.handle (p.getInputStream ());
			}
		}catch (IOException ioe){
			ioe.printStackTrace ();
		}catch (InterruptedException ie){
			ie.printStackTrace ();
		}
		try{
			this.finalize ();
		}catch (Throwable t){
			t.printStackTrace ();
		}
	}

	private void handle (InputStream is) throws IOException{
		InputStreamReader isr = new InputStreamReader (is);
		BufferedReader br = new BufferedReader (isr);
		System.out.println (br.readLine ());
	}
}

und ein Beispiel Bath-File:

Code:
net start DienstA
net start DienstB
net start DienstC
net start DienstD

Weiss jemand woran es liegen könnte?[/code]
 

manuche

Bekanntes Mitglied
An die Exec-Mehtode? Wenn ja dann den Pfad zu der Batch-Datei!

Hab so auch schon Batch-Dateien mit einer Zeile ausgeführt, was auch schonmal funktioniert hat...
 

The_S

Top Contributor
ja und sonst nichts? Kein vorangestelltes "cmd /c" bzw. "cmd /c start"?

Exec ist übrigens keine Methode sondern ein Konstruktor ;) .
 

manuche

Bekanntes Mitglied
Nein... nur den Pfad zu der Datei die ausgeführt werden soll...
Hat auch so in den ersten Testphasen funktionert und die exe lässt sich so auch ohne weiters ausführen!
Belehrt mich eines besseren aber eine Batch-Datei startet ja normalerweise eh die Konsole...

meinte auch die exec-Methode von der Runtime-Klasse und nicht meinen Konstruktor! ^^
 

manuche

Bekanntes Mitglied
wofür genau steht das " /c"? cmd ist klar und start ist ja der komplette Pfad zu der Datei mit allem drum und dran... xD
 

The_S

Top Contributor
hä? start ist der Pfad ???:L ? start ist ein Schlüsselwort zum Öffnen einer neuen Konsole (zumindest unter win). Das "/c" musst du schreiben, wenn du nach dem cmd noch was in der cmd ausführen willst. Nimms einfach als gegeben, dass du es brauchst (und NEIN, es hat nichts mit Laufwerksbuchstaben zu tun ;) ).
 

manuche

Bekanntes Mitglied
haha geil... start heisst in meinem programm der string indem der pfad zu der Batch-Datei steht, die vor dem eigentlich Programm ausgeführt werden soll... :D

Hab das ganze mal getestet! Ergebnis ist, dass die Batch-Datei zwar anscheinen nicht vernünftig ausgeührt wird, da bei dem eigentlichen programmstart die dienste nicht gestartet sind!
 

The_S

Top Contributor
Dann arbeite dich mal stück für stück vor ...

Mach mal den einfachen Aufruf
Code:
Runtime.getRuntime().exec("lw:/pfad/zur/batch/datei.bat");

Wenn das nicht geht, versuchst du das hier

Code:
Runtime.getRuntime().exec("cmd /c lw:/pfad/zur/batch/datei.bat");

und wenn das auch nicht geht das hier

Code:
Runtime.getRuntime().exec("cmd /c start lw:/pfad/zur/batch/datei.bat");

und wenn auch das nicht geht, dann überprüf mal ob der Pfad/die Datei leerzeichen enthält und deshalb etwas schief läuft.

Ansonsten machste nix. Einfach nur ne einfache Klasse mit main-Methode die außer diesen aufruf nix macht. Und wenn de alle 3 Methoden versucht hast, dann meldeste dich nochmal ;) .
 

manuche

Bekanntes Mitglied
Vorschlag 1 war mein Standard bis jetzt und hat aus den oben genannten Gründen nicht funktionert.

Vorschlag 2 genießt den gleichen Erfolg...

Vorschlag 3 führt dazu, dass alles Dienste gestartet werden, allerdings das eingentliche Programm schon gestartet wird, bevor die Batch-Datei terminiert ist. Und die Konsole bleibt offen :D
 

The_S

Top Contributor
Dann nimm den Vorschlag 3, vergiss "p.waitFor()" und lass stattdessen am Ende von deiner Batch-Datei z. B. eine kleine Datei erstellen. Mit deinem Java-Programm überprüfst du dann, ob die Datei schon existiert, falls ja => weiter im takt.

Ganz andere Idee: Warum nicht eine große Batch-Datei? Die startet zuerst die Dienste, anschließend das Programm und am Ende macht sie das, was dein letzter Aufruf machen soll (Dienste wieder beenden!?).
 

manuche

Bekanntes Mitglied
Ich möchte eigentlich nur die eigentlich Funktinalität beibehalten... Es soll ja nicht jedes Programm ein Callback besitzen! Das ganze soll halt optional sein!
 

manuche

Bekanntes Mitglied
Hobbit_Im_Blutrausch hat gesagt.:
Ganz andere Idee: Warum nicht eine große Batch-Datei? Die startet zuerst die Dienste, anschließend das Programm und am Ende macht sie das, was dein letzter Aufruf machen soll (Dienste wieder beenden!?).

...den Grund warum ich nicht eine große Batchdatei erstelle die alles ausführt...
 

The_S

Top Contributor
Hab ja auch noch eine Zweite Idee. Und du kannst ja je nach Übergabeparameter die Große ansprechen, oder eben nicht (genau genommen kannst du dir die batch-dateien ja auch selbst basteln und aus deinem Programm heraus speichern).

Versteh das Problem nicht so ganz ???:L
 

manuche

Bekanntes Mitglied
Soll ja jetzt auch nicht Problem des ganzen sein ;)
Ich würde dann wohl die Variante mit der Datei bevorzugen...
Nur mal blöd gefragt: Wie erstelle ich aus einer Batchdatei eine andere Datei? Den Befehl umzu löschen hab ich gefunden aber nicht den zum Datei erstellen!?
 

The_S

Top Contributor
Code:
echo in eine Datei mit dir >> ausgabe.txt

Erstellt die Datei "ausgabe.txt" im selben Ordner wie deine bat-Datei liegt und schreib "in eine Datei mit dir" in diese txt.
 

manuche

Bekanntes Mitglied
Alles klar... Es muss
Code:
echo in eine Datei mit dir > ausgabe.txt
heissen!
eine spitze Klammer zu erstellt eine Datei und zwei spitze Klammern zu schreiben in eine vorhanden Datei!
 

The_S

Top Contributor
sorry, mein Fehler :oops: . Habs nicht wirklich ausprobiert sondern aus meinem Gedächtnis geschrieben - und das ist wohl lückenhaft ;) .
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Problem beim Ausführen von Shell Commandos Allgemeine Java-Themen 3
L WindowsTrayIcon in Java 1.4 - Problem beim ausführen der JAR Allgemeine Java-Themen 2
Streeber Problem beim Kompilieren und Ausführen Allgemeine Java-Themen 20
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
T Problem beim Umwandeln in eine Jar-Datei Allgemeine Java-Themen 3
J Problem beim Umstellen auf Java jdk 13 Allgemeine Java-Themen 3
A Problem beim öffnen von Java-Installern Allgemeine Java-Themen 1
J Problem beim Generischen Klassen und Interfaces Allgemeine Java-Themen 2
G Problem beim GUI Allgemeine Java-Themen 9
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
I Problem beim Aufrufen, von Objektmethoden/ -variablen Allgemeine Java-Themen 6
D Selenium WebDriver HtmlUnitDriver Problem beim Automatisieren Allgemeine Java-Themen 1
F Problem beim Speichern eines Attachments Allgemeine Java-Themen 3
M Problem beim Starten der Anwendung Allgemeine Java-Themen 3
O Problem beim Auslesen einer Arraylist von JComboBoxen Allgemeine Java-Themen 2
GUI-Programmer JNI - Problem beim Erstellen der .dll Allgemeine Java-Themen 9
D Problem mit Referenzen beim Serialisieren Allgemeine Java-Themen 3
R Problem beim vCard Manipulieren Allgemeine Java-Themen 2
Rudolf Problem beim Visitorpattern Allgemeine Java-Themen 2
J Problem beim Auslesen einer Datei vom Server Allgemeine Java-Themen 4
M Problem beim schreiben einer eigene generische Klasse Hashtable Allgemeine Java-Themen 11
U Mailclient über getDesktop.mail vorbereiten, Problem beim Anhang: Allgemeine Java-Themen 3
M Problem beim schreiben einer eigene generische Klasse LinkedList Allgemeine Java-Themen 34
N Problem beim lesen einer File in JAR-File Allgemeine Java-Themen 3
N iText Problem beim verlinken anderer PDFs Allgemeine Java-Themen 2
M Problem beim Drucken von PDFs Allgemeine Java-Themen 3
H Problem beim Sortieren einer HashMap mit TreeSet Allgemeine Java-Themen 4
O Problem beim Ausgeben von Arrays Allgemeine Java-Themen 9
L Problem beim animieren von Bildern in Applet Allgemeine Java-Themen 23
C Problem beim einlesen bestimmter Seiten Allgemeine Java-Themen 5
Apo JNI-Problem beim erneuten Laden einer dll Allgemeine Java-Themen 28
S Problem beim Drucken auf Netzwerkdrucker unter Linux Allgemeine Java-Themen 9
S Problem beim Anlegen eines JDialogs! Allgemeine Java-Themen 4
A Problem mit ShutdownHook beim schließen Allgemeine Java-Themen 7
S Problem beim Löschen des Inhalts des Fensters Allgemeine Java-Themen 4
A Problem beim serialisieren/deserialisieren einer ArrayList Allgemeine Java-Themen 3
M Problem beim Umrechnen von Pixel in cm. Allgemeine Java-Themen 6
Escorter Problem beim starten von Batchfiles Allgemeine Java-Themen 4
A Problem beim Starten der H2-Datenbank Allgemeine Java-Themen 4
E Problem beim Anlegen einer Datei Allgemeine Java-Themen 4
E Problem beim Dateien kodieren ("Byte = Byte +1") Allgemeine Java-Themen 3
G Problem beim starten von eclipse product Allgemeine Java-Themen 2
M Problem beim Erstellen eines Objektes Allgemeine Java-Themen 3
M Problem beim laden von vielen Bildern Allgemeine Java-Themen 16
S Problem beim Einlesen von byte-werten aus datei Allgemeine Java-Themen 2
H Problem beim Malen auf ein Panel Allgemeine Java-Themen 2
G iText: Problem beim Drucken von AcroFormen Allgemeine Java-Themen 2
E Problem beim fertigen Programm die Hintergrundfarbe ändern Allgemeine Java-Themen 8
karambara Sonderzeichen-Problem beim Lesen und Speichern von Dateien Allgemeine Java-Themen 6
R Problem beim Datentransfer Allgemeine Java-Themen 19
C Problem beim Umstieg von Java1.4 auf 1.5 Allgemeine Java-Themen 5
K javax.comm Problem beim starten aus .jar heraus Allgemeine Java-Themen 3
S Problem beim Bearbeiten von Java-Dateien unter Linux Allgemeine Java-Themen 3
S Hab ein Problem! Bei Dame! Beim Umranden! Allgemeine Java-Themen 2
G Problem beim speichern von Dateien Allgemeine Java-Themen 8
M Problem mit PageFormat beim Drucken Allgemeine Java-Themen 2
E Problem beim Compilieren Allgemeine Java-Themen 6
O JNI Problem beim kompilieren Allgemeine Java-Themen 2
M Codepage Problem (Vertauscht Zeichen beim Lesen aus Datei) Allgemeine Java-Themen 3
P Problem beim "spliten" eine Textdatei Allgemeine Java-Themen 3
F Problem beim Drucken mit javax.print Allgemeine Java-Themen 2
Z Problem beim Aufruf eines Listener? Allgemeine Java-Themen 4
bernd Problem beim kopieren! Allgemeine Java-Themen 2
B problem beim erstellen einer ausführbaren jar-datei Allgemeine Java-Themen 5
A Problem beim Aufruf von javac Allgemeine Java-Themen 7
J JFrame Problem beim schließen Allgemeine Java-Themen 2
S Problem beim Zugriff auf Internetseiten Allgemeine Java-Themen 4
R Problem beim speichern von eigenem objekt Allgemeine Java-Themen 6
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3
F Streams als Alternative für dieses Problem ? Allgemeine Java-Themen 15
N Maven Problem mit Datenbanktreiber (H2 Embedded) Allgemeine Java-Themen 12
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
C ArrayList Problem Allgemeine Java-Themen 3
kev34 nim-Spiel problem Allgemeine Java-Themen 1
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
temi Problem mit Aufrufreihenfolge bei Vererbung Allgemeine Java-Themen 3
Sumo_ow "ArrayIndexOutofBoundsException: 2" Array Problem Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben