In meiner Java-Anwendung möchte ich eine Batchdatei ausführen, die " scons -Q implicit-deps-changed build\file_load_type export\file_load_type
" aufruft.
Es scheint, dass ich nicht einmal meine Batch-Datei zum Ausführen bringen kann. Ich habe keine Ideen mehr.
Folgendes habe ich in Java:
Runtime.
getRuntime().
exec("build.bat", null, new File("."));
Früher hatte ich eine Python-Sconscript-Datei, die ich ausführen wollte, aber da dies nicht funktionierte, beschloss ich, das Skript über eine Batch-Datei aufzurufen, aber diese Methode war noch nicht erfolgreich.
quelle
Win+R
(Runtime) kann Batchdateien direkt ausführen.Manchmal ist die Prozesszeit für die Thread-Ausführung höher als die Wartezeit für JVM-Threads. Dies geschieht, wenn die Verarbeitung des von Ihnen aufgerufenen Prozesses einige Zeit in Anspruch nimmt. Verwenden Sie den Befehl waitFor () wie folgt:
Auf diese Weise wird die JVM angehalten, bis der von Ihnen aufgerufene Prozess abgeschlossen ist, bevor der Thread-Ausführungsstapel fortgesetzt wird.
quelle
quelle
So führen Sie Batch-Dateien mit Java aus, wenn es sich um ...
Das sollte es tun.
quelle
ProcessBuilder ist die Java 5/ 6-Methode zum Ausführen externer Prozesse.
quelle
Die ausführbare Datei, die zum Ausführen von Batch-Skripten verwendet wird
cmd.exe
, verwendet das/c
Flag, um den Namen der auszuführenden Batch-Datei anzugeben:Theoretisch sollten Sie Scons auch auf diese Weise ausführen können, obwohl ich dies nicht getestet habe:
EDIT: Amara, du sagst, dass das nicht funktioniert. Der von Ihnen aufgeführte Fehler ist der Fehler, den Sie erhalten, wenn Sie Java von einem Cygwin-Terminal auf einer Windows-Box ausführen. machst du das Das Problem dabei ist, dass Windows und Cygwin unterschiedliche Pfade haben, sodass die Windows-Version von Java die ausführbaren Scons auf Ihrem Cygwin-Pfad nicht findet. Ich kann weiter erklären, ob sich dies als Ihr Problem herausstellt.
quelle
getestet mit jdk1.5 und jdk1.6
Das hat bei mir gut funktioniert, hoffe es hilft auch anderen. Um dies zu bekommen, habe ich mehr Tage gekämpft. :((
quelle
Ich hatte das gleiche Problem. Manchmal konnte CMD meine Dateien jedoch nicht ausführen. Deshalb erstelle ich eine temp.bat auf meinem Desktop, als nächstes wird diese temp.bat meine Datei ausführen und als nächstes wird die temporäre Datei gelöscht.
Ich weiß, dass dies ein größerer Code ist, der jedoch zu 100% für mich funktioniert hat, als sogar Runtime.getRuntime (). Exec () fehlgeschlagen ist.
quelle
Folgendes funktioniert einwandfrei:
quelle
Dieser Code führt zwei Befehle aus .bat, die im Pfad C: / folders / folder vorhanden sind.
quelle
Um die Antwort von @ Isha zu erweitern, können Sie einfach die folgenden Schritte ausführen , um die zurückgegebene Ausgabe (post-facto nicht in Echtzeit) des ausgeführten Skripts zu erhalten:
quelle