Wie führe ich eine Batch-Datei von Java aus?

8

Ich möchte eine Batch-Datei von einem Java-Programm ausführen.

Ich verwende den folgenden Befehl.

%Vor%

Aber das Problem ist, dass ich einen reativen Pfad anstelle des absoluten Pfades angeben möchte, damit ich dieses Java-Projekt auf einer beliebigen Komp. bereitstellen kann.

Die Verzeichnisstruktur des Projekts sieht folgendermaßen aus:

%Vor%

Ich möchte die Datei "Server.bat" im Verzeichnis "util" aus der Datei "Main.java" im Verzeichnis "parser" ausführen.

    
Yatendra Goel 14.09.2009, 12:05
quelle

7 Antworten

5

Wenn Java ausgeführt wird und Sie Runtime.exec () mit einem relativen Pfad verwenden, bedeutet relativ relativ zum aktuellen Benutzerverzeichnis, in dem die JVM aufgerufen wurde.

Dies funktioniert möglicherweise

%Vor%

wenn Sie Java aus dem übergeordneten Verzeichnis von com starten.

Oder Sie müssen einen absoluten Pfad berechnen:

%Vor%

Ich vergesse, lies wenn Runtime.exec () gewonnen hat 't .

    
PeterMmm 14.09.2009, 12:19
quelle
8

Sie können dazu ProcessBuilder verwenden. Es bietet viel mehr Kontrolle als exec . Insbesondere kann das Arbeitsverzeichnis mit der Methode directory festgelegt werden.

Beispiel:

%Vor%

Natürlich muss Ihre App deployDir von irgendwo erhalten. Es kann in der Umgebung eingestellt werden, in der Anwendungskonfigurationsdatei kann es das aktuelle Benutzerverzeichnis oder irgendetwas anderes sein.

    
Rorick 14.09.2009 12:17
quelle
6

Sie müssen "cmd.exe" mit den Argumenten "/ c" und "server.bat" ausführen:

%Vor%     
JesperE 14.09.2009 12:09
quelle
4

Sie können es mit Desktop versuchen, wenn es unterstützt wird (Java 1.6)

%Vor%     
Carlos Heuberger 14.09.2009 14:18
quelle
0

Plexus utils stellt einen Kommandozeilen-Typ zur Verfügung, der einen aufrufen kann beliebige Befehlszeile und handle Parsing der Ausgabe.

%Vor%     
Rich Seller 14.09.2009 12:26
quelle
0

Am besten ist es, das Installationsverzeichnis der Anwendung auf dem System zu speichern und dann die Pfade innerhalb der Anwendung zu erstellen. System.getProperty ("user.dir") sollte auf Windows- und Unix-Plattformen funktionieren, um das aktuelle Arbeitsverzeichnis zu erhalten, aber es ist systemabhängig, beachten Sie das.

    
Dan Polites 14.09.2009 12:35
quelle
0

Der zweite Parameter für exec ist ein String [] mit Argumenten für die Umgebungseinstellungen (null bedeutet, dass er die aktuellen Prozesse des Prozesses erbt) und der dritte Parameter für exec sollte eine Datei sein, die das Arbeitsverzeichnis liefert. Versuchen Sie Folgendes:

%Vor%     
JRL 14.09.2009 12:45
quelle

Tags und Links