/ / Ausführen von Befehlen mit Java [duplicate] - Java

Ausführen von Befehlen mit java [duplicate] - java

Mögliche Duplikate:
Java führt einen Befehl mit einem Leerzeichen im Pfadnamen aus

Ich habe folgenden Befehl

i_view32.exe C:*.bmp /import_pal=C:default.pal /convert=D:temp*.bmp Was, wenn ich über die Eingabeaufforderung ausgeführt wird, funktioniert gut. Ich versuche, den gleichen Befehl mit Hilfe von Java auszuführen.

 Process p = Runtime.getRuntime().exec(System.getenv("ProgramFiles")+"\IrfanView\i_view32.exe  c:\*.bmp /import_pal= 1.pal /convert=d:\temp\*.bmp");

Aber ich bin nicht in der Lage, Output in zu bekommen d:\temp\ Mappe. Kann mir jemand vorschlagen, wo ich falsch liege.

Danke im Voraus..

Gibt es einen anderen Weg zu geben "/" wie ich Schrägstrich benutze /import_pal=

Antworten:

0 für die Antwort № 1

2 Ihre Versuche sind nicht genau gleich. Ich denke, dass Sie Befehl von der Eingabeaufforderung ausgeführt haben, als Sie in waren c:Program FilesIrfanView. Wenn Sie versuchen, denselben Befehl auszuführenvon java nennst du den vollen weg. Da einige Programme für das aktuelle Arbeitsverzeichnis empfindlich sind, empfehle ich Ihnen, zuerst zu versuchen, den Befehl von einem anderen Verzeichnis aus auszuführen (z. B. von c :), aber den vollständigen Pfad anzugeben.

Wenn es manuell funktioniert, aber von Java aus nicht funktioniert, versuchen Sie, ProcessBuilder anstelle von zu verwenden Runtime.exec(). Eigentlich ist es fast das gleiche, aber es ist mehr objektorientiert und ermöglicht es, das Arbeitsverzeichnis separat anzugeben. Ich hoffe das wird für dich funktionieren.

Wenn nicht, versuchen Sie, mit Anführungszeichen zu spielen. Der Verzeichnispfad "c: Programme" enthält Leerzeichen, daher sollte der Pfad in Anführungszeichen gesetzt werden.

Viel Glück.


0 für die Antwort № 2

Versuchen Sie, CMD auszuführen

Beispiel:

proc = Runtime.getRuntime().exec("cmd.exe /c dir");

Es sollte in etwa so funktionieren, für Ihr Beispiel ist es etwas komplizierter, aber versuchen Sie es auf diese Weise.