Veröffentlicht 22. Juni 200520 j Hi zum 2. Mal! Sorry, aber ich such mir noch die Finger wund und hoffe es kann mir jemand helfen! Ich möchte mit JAVA gerne eine Batch-Datei ausführen! Wie geht das? Also soweit bin ich schon String cmd = "cmd /c C:\\Temp\\test.bat" Process p = Runtime.getRuntime().exec(cmd) Gut und schön, aber er führt die bat nicht aus!? Warum nicht? Bin langsam echt daran am verzeifeln. Andere PGMs wie Rechner oder Paint kann ich damit öffnen, auch Perlskripte kann ich ohne Probs damit starten, aber KEINE BAT.... *grumme* Ich bitte um eure Hilfe. MfG Vossi
22. Juni 200520 j Moin, bist du sicher das er den Batch nicht ausführt? Verwende ansonsten mal die Methode waitFor() vom Process-Objekt, um auf das Batchende zu warten... Gruß, Peter
23. Juni 200520 j Danke für deine Antwort, hab das gerade ausprobiert und leider auch ohne Erfolg. Ich bin mir ganz sicher, dass er die bat nicht ausführt, da ich dort ein mkdir eingebaut habe und er es nicht ausführt. Bei dem waitfor() bleibt er stehen und wartet eben auf die Beendigung, aber es sieht aus wie eine Endlosschleife und beendet sich net.
23. Juni 200520 j Wenn du eine Bat ausführst wird kein DOS-Fenster angezeigt. D.h. wenn in der Bat steht: z.B. net name dann bekommst du davon in der Tat nichts zurück. Um das ergebniss zu sehen musst du den entprechenden Stream vom Process auslesen. Da steht dann genau das drin was normalerweise in der DOS Box steht. Was soll denn deine Batch machen?
23. Juni 200520 j Danke für die Anmerkung, aber das habe ich schon gewusst... und es brachte leider auch nichts. Ich will die DOS-Box ja nicht einmal sehen. In meiner test.bat will ich einfach ein Verzeichnis mit MKDIR anlegen und das passiert nicht, bzw. nur dann wenn ich die bat selber aufrufe. Ich will selber rein gar nichts mit einer bat-Datei machen. Nur hier bei uns in der Firma sind wohl noch einige Altlasten, die darüber gestartet werden und ich versuche jetzt irgendwie diese über JAVA zu starten. Nur ich kann einfach keine bat starten. Ich bin schon mehrere Tage daran am verzeifeln. Andere Applikationen (notepad, calc etc.) und Skripte aus Perl lassen sich wunderbar starten nur eben keine *.bat!!!!
23. Juni 200520 j Hm. Bei mir klappt's. Hier der Java-Code: Process process = null; try { process = Runtime.getRuntime().exec("cmd /c C:\\test.bat"); } catch (IOException e) { e.printStackTrace(); } und die Batch: @echo off mkdir C:\test
23. Juni 200520 j Hey du bist richtig gut... jetzt klappt es mehr oder weniger! Bei mir lag es wohl an IOException (hatte nur Exception verwendet!) Echt vielen Dank!
23. Juni 200520 j Sag mal, kannst du mir auch verraten, wie ich unter JAVA das Verzeichnis wechseln kann? C: cd Temp mkdir tt das macht JAVA nicht, sonder bleibt dann unter C:\Windows! mkdir C:\Temp\tt dann geht das...?? kann man das auch anders lösen? Nur so rein Interesse halber?!
23. Juni 200520 j Runtime.exec arbeitet immer auf dem angegebenen Verzeichnis. Oder dem Standardverzeichnis, falls keines angegeben ist. D. h. daß bei 3 aufeinander folgenden Aufrufen das Verzeichnis immer wieder zurückgesetzt wird. Evtl. kannst Du statt 3 Aufrufen einen schreiben, wenn die Konsole das unterstützt. Ansonsten klappt es wohl nur dann, wenn die Befehle in einer Batch stehen und Du diese aufrufst.
23. Juni 200520 j Evtl. kann mir jemand helfen. Ich habe ein Programm in einer .jar-Datei und eine Batch-Datei die java anweist, eine bestimmte Klasse darin aufzurufen. Das funktioniert allerdings nur solange man nicht über UNC-Pfade geht, also die Batch aufruft, wenn sie im Netzwerk liegt. Sie muß dann erst auf die Platte kopiert werden. Weiß jemand, ob und wie man eine .jar im Netzwerk ausführt?
23. Juni 200520 j Bei deiner Frage muss ich leider passen.. Sorry... Das Problem was wohl vorherrscht, ist wohl, dass JAVA als Standardpfad C:\WINDOWS hat und dort alles ausführt, wie kann man das ändern... So ist ja nicht sicher gestellt, dass jeder befehl in der bat funzt??
23. Juni 200520 j Egal... ist nicht weiter tragisch... es werden halt immer nur absolute Pfade in der bat angegeben und dann läuft das auch so! VIELEN DANK AN ALLE, die mir geholfen haben! :uli
23. Juni 200520 j Das Problem was wohl vorherrscht, ist wohl, dass JAVA als Standardpfad C:\WINDOWS hat und dort alles ausführt, wie kann man das ändern... Ein Blick in die Java-Referenz offenbart: public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException Und in dir steht, rate mal , das Verzeichnis in dem gearbeitet werden soll.
23. Juni 200520 j jetzt sag nicht, im letzten abschnitt??? Och nein... das wäre ja zu simple... gleich mal an testen!
24. Juni 200520 j Danke für den Hinweis... jetzt macht JAVA + BAT genau was sie sollen... Vielen Dank an Alle!
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.