Bat Parameter mit Leerzeichen beim Aufruf übergeben
Hallo,
beim Aufruf einer .Bat (vmstart.bat) will ich einen Parameter mit Leerzeichen übergeben.
vmstart.bat Dateiname.
Es handelt sich um eine Bat bei der zunächst verschiedene Dienste aktiviert, dann eine VM aufgerufen
und anschliessend die Dienste wieder deaktiviert werden.
Hab auch alle Variationen mit "" probiert. Haut nicht hin.
BEISPIEL:
Aufruf:
vmstart.bat E:\virtuell\dat\server\Windows Server 2008.vmx
vmstart.bat:
start /WAIT "" %1
Funktioniert nicht. VM wird nicht aufgerufen. Bei .vmx ohne Leerzeichen klappts.
Was mache ich falsch?
Habs jetzt so gelöst:
start /WAIT "" "%1 %2 %3 %4 %5 %6 %7 %8 %9"
Dann funktionierts. Aber das ist ja keine ordentliche Lösung.
Was ist wenn mehr als 9 Leerzeichen drin sind?
Was ist, wenn ich einen 2. Parameter übergeben will?
Frage: Wie kann ich beim Aufruf einer .Bat einen Parameter mit Leerzeichen übergeben
Gruß
Uwe
beim Aufruf einer .Bat (vmstart.bat) will ich einen Parameter mit Leerzeichen übergeben.
vmstart.bat Dateiname.
Es handelt sich um eine Bat bei der zunächst verschiedene Dienste aktiviert, dann eine VM aufgerufen
und anschliessend die Dienste wieder deaktiviert werden.
Hab auch alle Variationen mit "" probiert. Haut nicht hin.
BEISPIEL:
Aufruf:
vmstart.bat E:\virtuell\dat\server\Windows Server 2008.vmx
vmstart.bat:
start /WAIT "" %1
Funktioniert nicht. VM wird nicht aufgerufen. Bei .vmx ohne Leerzeichen klappts.
Was mache ich falsch?
Habs jetzt so gelöst:
start /WAIT "" "%1 %2 %3 %4 %5 %6 %7 %8 %9"
Dann funktionierts. Aber das ist ja keine ordentliche Lösung.
Was ist wenn mehr als 9 Leerzeichen drin sind?
Was ist, wenn ich einen 2. Parameter übergeben will?
Frage: Wie kann ich beim Aufruf einer .Bat einen Parameter mit Leerzeichen übergeben
Gruß
Uwe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 164295
Url: https://administrator.de/contentid/164295
Ausgedruckt am: 21.11.2024 um 13:11 Uhr
16 Kommentare
Neuester Kommentar
Moin ovu-p86,
eventuell hast du den CMD_interpreter daadurch auf eine falsche Fährte gebracht,
weil bei dir nicht nur doppelte Anführungszeichen in der Batch stehen,
sondern zwischen den beiden letzten auch noch ein Leerzeichen.
So zumindest in deiner letzten Antwort.
Sei es wie es sei - wenn es erledigt ist, dann mach bitte noch ein grünes Häkchen dran.
Grüße
Biber
eventuell hast du den CMD_interpreter daadurch auf eine falsche Fährte gebracht,
weil bei dir nicht nur doppelte Anführungszeichen in der Batch stehen,
sondern zwischen den beiden letzten auch noch ein Leerzeichen.
start /WAIT "" "%1 "
So zumindest in deiner letzten Antwort.
Sei es wie es sei - wenn es erledigt ist, dann mach bitte noch ein grünes Häkchen dran.
Grüße
Biber
Jepp, danke dir,
aber der Vollständigkeit halber noch eine weitere mögliche Fehlerquelle:
Der Parameter für den Titel kommt bei start vor allen anderen Parametern (also auch vor /WAIT)
START ["Titel"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME] | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [Befehl/Programm]
[Parameter]
Probier es doch einfach mal, indem du tatsächlich einen Titel ungleich Leerstring mitgibst.
[Sorry, das hatte ich vorhin auch gar nicht gerafft]
Grüße
Biber
aber der Vollständigkeit halber noch eine weitere mögliche Fehlerquelle:
Der Parameter für den Titel kommt bei start vor allen anderen Parametern (also auch vor /WAIT)
START ["Titel"] [/Dpath] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME] | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [Befehl/Programm]
[Parameter]
Probier es doch einfach mal, indem du tatsächlich einen Titel ungleich Leerstring mitgibst.
[Sorry, das hatte ich vorhin auch gar nicht gerafft]
Grüße
Biber
Moin ovu-p86,
auf die Gefahr hin, dich vollends raschelig zu machen:
Wenn dein Aufruf der Batchdatei so aussieht:
vmstart.bat "E:\virtuell\dat\server\Windows Server 2008.vmx"
...dann sollte es in der Batch
-entweder so aussehen:
"%~1" && Rem Also mit Tilde=alle Anführungszeichen weg und eigene drum
oder aber
"%*" && Rem alle Parameter (Anfü-Zeichen sind automatisch weg) plus eigene Anfü-Zeichen
Grüße
Biber
auf die Gefahr hin, dich vollends raschelig zu machen:
Wenn dein Aufruf der Batchdatei so aussieht:
vmstart.bat "E:\virtuell\dat\server\Windows Server 2008.vmx"
...dann sollte es in der Batch
-entweder so aussehen:
"%~1" && Rem Also mit Tilde=alle Anführungszeichen weg und eigene drum
oder aber
"%*" && Rem alle Parameter (Anfü-Zeichen sind automatisch weg) plus eigene Anfü-Zeichen
Grüße
Biber
... wobei Du dann noch den Effekt von
billiger mit
haben kannst.
Erklärungsansatz: Wenn Du doppelte Anführungszeichen verwendest, wird jeweils der Teil dazwischen (also zwischen dem ersten und zweiten sowie zwischen dem dritten und vierten) zusammengehalten (auch wenn da nix steht), der Teil zwischen den Anführungszeichenpaaren (also der Pfad "E:\virtuell\dat\server\Windows Server 2008.vmx") steht wieder "nackt" da und wird am Leerzeichen getrennt - und den Effekt kannst Du auch ganz ohne Anführungszeichen erzielen ...
Grüße
bastla
"%1"
%~1
Erklärungsansatz: Wenn Du doppelte Anführungszeichen verwendest, wird jeweils der Teil dazwischen (also zwischen dem ersten und zweiten sowie zwischen dem dritten und vierten) zusammengehalten (auch wenn da nix steht), der Teil zwischen den Anführungszeichenpaaren (also der Pfad "E:\virtuell\dat\server\Windows Server 2008.vmx") steht wieder "nackt" da und wird am Leerzeichen getrennt - und den Effekt kannst Du auch ganz ohne Anführungszeichen erzielen ...
Grüße
bastla
@bastla
Moin,
die Vermutung hatte ich auch, leider trifft sie wohl nicht zu, wie sich leicht feststellen lässt (XP SP3):
Ergebnis:
Oder meinst du mit "zusammengehalten" nur die Ausführung?
Gruß
Moin,
die Vermutung hatte ich auch, leider trifft sie wohl nicht zu, wie sich leicht feststellen lässt (XP SP3):
@echo off & setlocal
@echo parameter 1 ["%1"]
@echo parameter 2 ["%2"]
@echo parameter 3 ["%3"]
@echo parameter ~ 1 [%~1]
@echo parameter ~ 2 [%~2]
@echo parameter ~ 3 [%~3]
Pause
Ergebnis:
R:\>test "Irgendwas mit Spaces" bla "blubb"
parameter 1 [""Irgendwas mit Spaces""]
parameter 2 ["bla"]
parameter 3 [""blubb""]
parameter ~ 1 [Irgendwas mit Spaces]
parameter ~ 2 [bla]
parameter ~ 3 [blubb]
Drücken Sie eine beliebige Taste . . .
Oder meinst du mit "zusammengehalten" nur die Ausführung?
Gruß
@bastla
Dann hatte ich das doch in den falschen Kanal geroutet.
[OT]
Aber eigentlich unterscheiden sich ja Parameterübergabe und Parameterausführung dann mal wieder. Denn der 1. Parameter wird ja trotz der doppelten Anführungszeichen als ein Parameter zumindest erstmalig erkannt. *g
Was die rootharigen Praktikantinnen sich dabei wieder mal gedacht haben .......
[/OT]
Grüße
Dann hatte ich das doch in den falschen Kanal geroutet.
[OT]
Aber eigentlich unterscheiden sich ja Parameterübergabe und Parameterausführung dann mal wieder. Denn der 1. Parameter wird ja trotz der doppelten Anführungszeichen als ein Parameter zumindest erstmalig erkannt. *g
Was die rootharigen Praktikantinnen sich dabei wieder mal gedacht haben .......
[/OT]
Grüße