Ich habe eine Batch-Datei geschrieben, um eine Anwendung zu starten (die Anwendung gehört nicht mir, ich kann sie nicht ändern). Die Batch-Datei selbst akzeptiert einige Parameter. Die Anwendung akzeptiert andere Parameter. Die Stapelverarbeitungsdatei verwendet alle ihre Optionen, indem sie UMSCHALTTASTE verwendet, startet dann die Anwendung mit der richtigen Umgebung und übergibt die verbleibenden Parameter an die Anwendung. Beispiel für den Aufruf der Batch-Datei:
%Vor%Im Beispiel werden "-opt-1" und "-opt-2" von script.bat verbraucht. Am Ende muss es die ursprüngliche Anwendung mit den Parametern "/ opt-a" und "/ opt-b = value" aufrufen. Das Zeichen "=" im letzten Parameter wird von der Anwendung erwartet, ich kann es nicht ändern. Es funktioniert gut, wenn ich die Anwendung direkt von der Befehlszeile aus aufrufen.
Aber wenn ich es aus dem Skript herausrufe, erhält die Anwendung 2 Parameter für "/ opt-b = value": sowohl "/ opt-b" als auch "value". Wenn ich "% *" verwende, wenn ich die Anwendung aufruft, werden die Zeichen "=" beibehalten, aber alle Parameter werden übergeben (einschließlich der mit SHIFT übersprungenen Parameter).
Gibt es eine Möglichkeit, nur die letzten Parameter zu übergeben und "=" Zeichen zu erhalten?
Rufen Sie Ihre script.bat
auf diese Weise an:
und innerhalb script.bat
, rufen Sie die Anwendung auf folgende Weise auf:
BEARBEITEN : Antwort auf die Kommentare
Ok. Lassen Sie uns dieses Problem mit Details überprüfen.
Die script.bat-Datei unten:
%Vor% (beachten Sie bitte den ECHO
-Befehl), rufen Sie die Anwendung korrekt auf, wobei der zweite Parameter ein Gleichheitszeichen enthält, wenn der vierte Parameter in Anführungszeichen steht, da die nächste Bildschirmausgabe folgendes anzeigt:
Wenn jedoch die Anwendung EINE BATCH FILE ist, leidet sie unter dem gleichen Problem wie die ursprüngliche script.bat-Datei. Sie sagten, dass "es funktioniert, wenn ich die Anwendung direkt von der Befehlszeile aus aufrufen". Nun, das ist nicht wahr:
%Vor%Die Parameter einer Batch-Datei können neben Leerzeichen und Tabulatoren durch Komma, Semikolon oder Gleichheitszeichen getrennt sein. Auf diese Weise, wenn "The"="Anmelden der letzte Parameter von der Anwendung erwartet wird", dann gibt es keine Möglichkeit, dass die Anwendung eine Batch-Datei und keinen Sinn haben, diese Methode mit a zu testen Batch-Datei anstelle der Anwendung.
Haben Sie diese Lösung mit der real -Anwendung getestet?
Dabei ist 1
die Anzahl der zu überspringenden Parameter.
Testen ... main .bat
(q20572424.bat)
Tochtergesellschaft .bat
(q20572424a.bat)
Zweites Tochterunternehmen .bat
(q20572424b.bat)
Ergebnisse:
Vom Ausführen von q20572424 -opt-1 -opt-2 /opt-a /opt-b=value
Was scheint richtig zu sein. In jedem Fall erhält die Untergruppe die Parameter wörtlich; Die Anzahl der entfernten führenden Parameter beträgt 2,1,0 für jeden Anruf.
W7HP - funktioniert für mich!
Tags und Links windows batch-file