schnulle500
Goto Top

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?

Content-Key: 116690

Url: https://administrator.de/contentid/116690

Printed on: April 25, 2024 at 18:04 o'clock

Member: Biber
Biber May 25, 2009 at 08:43:05 (UTC)
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
Member: Schnulle500
Schnulle500 May 25, 2009 at 09:21:30 (UTC)
Goto Top
OK, vielen Dank.

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

Bis dann
Schnulle500
Mitglied: 77559
77559 May 25, 2009 at 09:30:26 (UTC)
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