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-ID: 186330

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

Ausgedruckt am: 16.11.2024 um 01:11 Uhr

bastla
bastla 12.06.2012 aktualisiert um 13:21:12 Uhr
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
Turrex0100
Turrex0100 12.06.2012 um 13:35:21 Uhr
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.