Vossi84 Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 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 Zitieren
Morbid_Soul Geschrieben 22. Juni 2005 Geschrieben 22. Juni 2005 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 Zitieren
Vossi84 Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 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. Zitieren
speedi Geschrieben 23. Juni 2005 Geschrieben 23. Juni 2005 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? Zitieren
Vossi84 Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 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!!!! Zitieren
geloescht_Newlukai Geschrieben 23. Juni 2005 Geschrieben 23. Juni 2005 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 Zitieren
Vossi84 Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 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! Zitieren
Vossi84 Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 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?! Zitieren
geloescht_Newlukai Geschrieben 23. Juni 2005 Geschrieben 23. Juni 2005 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. Zitieren
geloescht_Newlukai Geschrieben 23. Juni 2005 Geschrieben 23. Juni 2005 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? Zitieren
Vossi84 Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 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?? Zitieren
Vossi84 Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 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 Zitieren
geloescht_Newlukai Geschrieben 23. Juni 2005 Geschrieben 23. Juni 2005 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. Zitieren
Vossi84 Geschrieben 23. Juni 2005 Autor Geschrieben 23. Juni 2005 jetzt sag nicht, im letzten abschnitt??? Och nein... das wäre ja zu simple... gleich mal an testen! Zitieren
Vossi84 Geschrieben 24. Juni 2005 Autor Geschrieben 24. Juni 2005 Danke für den Hinweis... jetzt macht JAVA + BAT genau was sie sollen... Vielen Dank an Alle! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.