schnulle500

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:
@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?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 116690

Url: https://administrator.de/forum/shift-trennt-kommandozeilenargument-mit-wertzuweisung-auf-116690.html

Ausgedruckt am: 06.05.2025 um 21:05 Uhr

Biber
Biber 25.05.2009 um 10:43:05 Uhr
Goto Top
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:
(=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
Schnulle500
Schnulle500 25.05.2009 um 11:21:30 Uhr
Goto Top
OK, vielen Dank.

So weit hatte ich's schon, konnte es aber nicht glauben, dass das wirklich nicht geht.

Bis dann
Schnulle500
77559
77559 25.05.2009 um 11:30:26 Uhr
Goto Top
Hallo Schnulle500,
die Standard Delimiter auf der Kommandozeile sind Komma Semikolon Leer Gleichheitszeichen und TAB.

Aber du kannst ja die Kommandozeile selber dekodieren face-wink

Alle Argumente ungetrennt kriegst du mit %*
Parsen musst du dann halt selber.

Gruß
LotPings