SHIFT trennt Kommandozeilenargument mit Wertzuweisung auf
Bekomme die Kommendozeilenargumente bei folgendem Aufruf nicht auseinander:
test.bat "C:\My Folder\out.txt" arg1=5 argx=y
test.bat:
Ist-Output:
Soll-Output:
Kann mir hier bitte jemand helfen?
@echo off
:NEXT_CMDLINE_ARG
IF NOT "%~1"=="" (
ECHO %~1
SHIFT
GOTO NEXT_CMDLINE_ARG
)
Ist-Output:
C:\My Folder\out.txt
arg1
5
argx
y
Soll-Output:
C:\My Folder\out.txt
arg1=5
argx=y
Kann mir hier bitte jemand helfen?
Please also mark the comments that contributed to the solution of the article
Content-Key: 116690
Url: https://administrator.de/contentid/116690
Printed on: May 4, 2024 at 12:05 o'clock
3 Comments
Latest comment
Moin Schnulle500,
in diesem Fall (wenn ein Argument ein Gleichheitszeichen enthält) musst du es ausdrücklich als EIN Argument kennzeichnen, indem Du es in Anführungszeichen einbettest.
Demo:
ist zusätzlich noch ein Teil des Arguments selbst in Anführungszeichen, dann entsprechend:
Grüße
Biber
in diesem Fall (wenn ein Argument ein Gleichheitszeichen enthält) musst du es ausdrücklich als EIN Argument kennzeichnen, indem Du es in Anführungszeichen einbettest.
Demo:
(=10:38:17 D:\temp=)
>test C:\myfolder\out.txt arg1=5 argx=y
C:\myfolder\out.txt
arg1
5
argx
y
(=10:38:41 D:\temp=)
>test C:\myfolder\out.txt "arg1=5" "argx=y"
C:\myfolder\out.txt
arg1=5
argx=y
ist zusätzlich noch ein Teil des Arguments selbst in Anführungszeichen, dann entsprechend:
>test C:\myfolder\out.txt "arg1=5" "argx="y""
C:\myfolder\out.txt
arg1=5
argx="y"
Grüße
Biber
Hallo Schnulle500,
die Standard Delimiter auf der Kommandozeile sind Komma Semikolon Leer Gleichheitszeichen und TAB.
Aber du kannst ja die Kommandozeile selber dekodieren
Alle Argumente ungetrennt kriegst du mit %*
Parsen musst du dann halt selber.
Gruß
LotPings
die Standard Delimiter auf der Kommandozeile sind Komma Semikolon Leer Gleichheitszeichen und TAB.
Aber du kannst ja die Kommandozeile selber dekodieren
Alle Argumente ungetrennt kriegst du mit %*
Parsen musst du dann halt selber.
Gruß
LotPings