Ich muss den folgenden Befehl mit ProcessBuilder erstellen:
%Vor%Ich habe es mit folgendem Code versucht:
%Vor%Dies übergibt jedoch Folgendes an das System (verifiziert mit Sysinternals Process Monitor)
%Vor% Beachten Sie das Angebot vor /enable
und die beiden Angebote nach Device
. Ich muss diese zusätzlichen Anführungszeichen loswerden, weil sie den Aufruf fehlschlagen lassen. Weiß jemand, wie man das macht?
Soweit ich weiß, müssen Sie, da ProcessBuilder keine Ahnung hat, wie Parameter an den Befehl übergeben werden, die Parameter separat an ProcessBuilder übergeben;
%Vor%Joachim hat Recht, aber seine Antwort ist unzureichend, wenn Ihr Prozess einheitliche Argumente wie folgt erwartet:
%Vor%Wie aus stefan ersichtlich, wird ProcessBuilder Leerzeichen in Ihrem Argument sehen und es in Anführungszeichen setzen, wie folgt:
%Vor% Das Aufteilen der Parameterwerte, wie von Joachim empfohlen, führt zu einem Leerzeichen zwischen /myparameter=
und "my value"
, was bei diesem Parametertyp nicht funktioniert:
Laut Sun ist es in ihrer unendlichen Weisheit kein Bug und doppelte Anführungszeichen kann mit Escapezeichen versehen werden , um das gewünschte Verhalten zu erzielen.
Um Stefans Frage endlich zu beantworten, ist dies eine Alternative, die funktionieren sollte, wenn der Prozess, den Sie aufrufen, die Dinge richtig macht:
%Vor% Dies sollte Ihnen den Befehl "C:\Program Files\USBDeview\USBDeview.exe" "/enable \"My USB Device\""
geben, was den Trick machen könnte; YMMV.
Zuerst müssen Sie die Argumente selbst aufteilen - ProcessBuilder
macht das nicht für Sie - und zweitens müssen Sie keine umbrochenen Anführungszeichen um die Argumentwerte legen.
Die Anführungszeichen sind in der Befehlszeile erforderlich, um dem cmd-Parser mitzuteilen, wie die Wörter in Argumente aufgeteilt werden sollen, aber ProcessBuilder
benötigt sie nicht, weil den Argumenten bereits die Vorteilung zugewiesen wurde.
Tags und Links java windows process processbuilder