turrex0100
Goto Top

Parameter einer Batchdatei aufschlüsseln

Hallo Zusammen,

Ich komme mal direkt zu meiner Frage, also ich habe eine Batchdatei an die ich gerne parameter in der form
batch.bat eins=1 zwei=2

übergeben würde...

Die anzahl der Parameter ist dabei aber immer unterschiedlich,

meine frage ist nun wie ich die parameter so aufteilen kann das ich nachher in der Batchdatei die Variablen nach dem schema:
set "1_1=eins"  
set "1_2=1"  

set "2_1=zwei"  
set "2_2=2"  

...usw

Für eure Hilfe wäre ich sehr dankbar,

Grüße Malte.

Content-Key: 186330

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

Printed on: April 19, 2024 at 23:04 o'clock

Member: bastla
bastla Jun 12, 2012 updated at 11:21:12 (UTC)
Goto Top
Hallo Turrex0100!

Grundsätzlich halte ich ja eher weniger davon, Variablen der Art "1_1" zu verwenden, aber das sollte sich im einfachsten Fall etwa so lösen lassen:
@echo off & setlocal
set /a PNr=1
set /a WNr=1
for %%i in (%*) do call :ProcessParam %%i
:: ab hier Verarbeitung
::
:: Ende Hauptprogramm
goto :eof

:ProcessParam
echo "%~1"|findstr "=">nul && (  
    for /f "tokens=1* delims==" %%a in ("%~1") do (  
        set "%PNr%_1=%%~a"  
        set "%PNr%_2=%%~b"  
    )
    set /a PNr+=1
    set /a WNr=1
) || (
    set "%PNr%_%WNr%=%~1"  
    set /a WNr+=1
    if %WNr% geq 2 (
        set /a PNr+=1
        set /a WNr=1
    )
)
goto :eof
Die unterschiedliche Behandlung der einzelnen Parameter(teile) ist erforderlich, da "=" als Trennzeichen interpretiert wird, wenn nicht das "Parameter-Werte-Paar" unter Anführungszeichen übergeben wird ...

Grüße
bastla
Member: Turrex0100
Turrex0100 Jun 12, 2012 at 11:35:21 (UTC)
Goto Top
Hallo Bastla,

Danke für die schnelle Hilfe!

Das Programm tut das was es soll, ich gebe dir recht das die bezeichnung der Variablen etwas unelegant ist,
da werde ich mir noch was feineres einfallen lassen ;)

Gruß Malte.