Anzall der Übergabeparameter ermitteln sowie Parameter auswerten
Hallo,
kann mir vielleicht jemand sagen, wie ich die Anzahl der an ein Batchfile übergebene Parameter ermitteln kann?
Des Weiteren möchte ich überprüfen ob ein übergebener Wert gültig ist.
z.B.
Ist Parameter 1 nicht wert1 oder wert2 oder wert3 dann gebe Fehler aus und springe nach eof
Schon mal danke und Gruß,
Mario
kann mir vielleicht jemand sagen, wie ich die Anzahl der an ein Batchfile übergebene Parameter ermitteln kann?
Des Weiteren möchte ich überprüfen ob ein übergebener Wert gültig ist.
z.B.
Ist Parameter 1 nicht wert1 oder wert2 oder wert3 dann gebe Fehler aus und springe nach eof
if %1 != "wert1" |
if %1 != "wert2" |
if %1 != "wert3" (
echo "Fehler"
goto eof
)
Schon mal danke und Gruß,
Mario
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Biber am 03.06.2010 um 13:30:50 Uhr
Anzall der Übergabeparameter ermitteln sowie Parameter auswerten
Der zweite Blindflug.. äh...Blindschreibversuch....Ich warte mal ab.
200 Anschläge pro Minute sind ein schönes Ziel ... aber bitte nicht 200 Anschläge auf meine Lachmuskeln...
Kommentar von Moderator Biber am 03.06.2010 um 13.30.50 Uhr
Anzhal der Übergabeparamter ermitteln sowie Parameter auswerten
... nach den ersten drei übergebenen Titel-Parametern scheint die Parameterprüfung besser zu funktionieren... Content-ID: 144110
Url: https://administrator.de/contentid/144110
Ausgedruckt am: 19.11.2024 um 20:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo Mario!
Die Überprüfung auf einen bestimmten Wert könntest Du so versuchen:
wobei "#" als Trennzeichen dient und daher nicht in "wertx" vorkommen soll (Du kannst aber natürlich andere Zeichen, etwa "§", dafür verwenden). Wenn Groß-/Kleinschreibung berücksichtigt werden soll, das "/i" entfernen.
Hinsichtlich des Zählens:
Vermutlich willst Du eher wissen, ob zB ein Parameter 3 übergeben wurde - dann:
Ansonsten (aber tatsächlich nur zum Zählen):
Grüße
bastla
Die Überprüfung auf einen bestimmten Wert könntest Du so versuchen:
echo #wert1#wert2#wert3#|findstr /i /c:"#%~1#">nul || (echo Fehler & goto :eof)
Hinsichtlich des Zählens:
Vermutlich willst Du eher wissen, ob zB ein Parameter 3 übergeben wurde - dann:
if "%~3" neq "" echo Parameter 3: %3
@echo off & setlocal
set /a Par=0
:Loop
if "%~1"=="" goto :Done
set /a Par+=1
shift
goto :Loop
:Done
echo %Par% Parameter uebergeben
bastla
Moin Mario.Steinberg.
Ich würde das etwas anders machen.
[Damit meine ich bastlas Lösungsstrategie - nicht deine Schreibweise von "Anzahl" und "Parameter" im Titel.. ]
Meine Variante:
Damit lassen sich sowohl ein-wortige Parameter wie suchwert1 behandeln wie auch Parameter wie "einer mit Leerzeichen".
Beispielaufruf:
<code plain>
Drücken Sie eine beliebige Taste . . .
Grüße
Biber
P.S. Keine Ahnung, ob es den Begriff "ein-wortig" wirklich gibt... aber nach dem essen bin ich immer zu schläfig zum suchmaschinen.
Und immer etwas einsilbig.
[Edit] @bastla
ich wollte doch nur einen anderen Weg aufzeigen, keinen besseren...
[/Edit]
Ich würde das etwas anders machen.
[Damit meine ich bastlas Lösungsstrategie - nicht deine Schreibweise von "Anzahl" und "Parameter" im Titel.. ]
Meine Variante:
@echo off & setlocal
For %%i in (%*) do if /i "%%~i" equ "Suchwert1" goto :myStart
For %%i in (%*) do if /i "%%~i" equ "Mein Suchwert2" goto :myStart
(echo Parameter "Suchwert" nicht gefunden.) & pause & goto :eof
:mystart
Echo hier is' Label :myStart
:: ... { eigentlicher Nutz-Batch
goto :eof
Damit lassen sich sowohl ein-wortige Parameter wie suchwert1 behandeln wie auch Parameter wie "einer mit Leerzeichen".
Beispielaufruf:
<code plain>
e:\schnipsel\chkparms sdfa asdfas wearqw nottingham
Parameter "Suchwert" nicht gefunden.Drücken Sie eine beliebige Taste . . .
e:\schnipsel\chkparms sdfa asdfas wearqw suchwert1
hier is' Label :myStarte:\schnipsel\chkparms sdfa asdfas wearqw "mein suchwert2"
hier is' Label :myStartGrüße
Biber
P.S. Keine Ahnung, ob es den Begriff "ein-wortig" wirklich gibt... aber nach dem essen bin ich immer zu schläfig zum suchmaschinen.
Und immer etwas einsilbig.
[Edit] @bastla
Wieso sollte das bei meinem Vorschlag nicht gehen?
Sorry, das hatte ich weder gedacht noch suggerieren wollen... natürlich geht das auch bei deiner Variante.ich wollte doch nur einen anderen Weg aufzeigen, keinen besseren...
[/Edit]
Wobei man den Zähler auch für ein Pseudo Array nutzen kann:
Beispiel Ausgabe:
Wenn du Aufgrund einiger definierter Werte Aktionen starten willst, kommt auch eine For Schleife mit Label in Betracht:
Beispiel Ausgabe
Feiertagsgrüße aus NRW
Edit hatte vesehentlich die 2.Batch doppelt eingefügt. If mit /i ergänzt.
:: Mario.cmd administrator.de 2010-06-03
@echo off & setlocal
set Par=100
:Loop
if "%~1"=="" goto :Done
set /a Par+=1
Set "Par[%Par:~-2%]=%~1"
shift
goto :Loop
:Done
echo %Par:~-2% Parameter uebergeben
Set Par[
Beispiel Ausgabe:
>Mario.cmd 1 2 3,vier "5 fünf" 6 7 8 neun,zehn
10 Parameter uebergeben
Par[01]=1
Par[02]=2
Par[03]=3
Par[04]=vier
Par[05]=5 fünf
Par[06]=6
Par[07]=7
Par[08]=8
Par[09]=neun
Par[10]=zehn
Wenn du Aufgrund einiger definierter Werte Aktionen starten willst, kommt auch eine For Schleife mit Label in Betracht:
:: Mario2.cmd administrator.de 2010-06-03
@echo off & setlocal
For %%A in ("wert1" "wert2" "wert3") Do If /i %%A EQU "%~1" goto :Label_%%~A
Echo "Fehler"
Exit /B 1
:Label_wert1 --------------------------------------------------------
Echo Label_wert1
Goto :Eof
:Label_wert2 --------------------------------------------------------
Echo Label_wert2
Goto :Eof
:Label_wert3 --------------------------------------------------------
Echo Label_wert3
Goto :Eof
>mario2 wert2
Label_wert2
Feiertagsgrüße aus NRW
Edit hatte vesehentlich die 2.Batch doppelt eingefügt. If mit /i ergänzt.
@Biber
Grüße
bastla
[Edit] No problem - ich hatte mich nur vorweg schon vergewissert, dass das "/c:" auch da war, und mich deshalb etwas gewundert ... [/Edit]
Damit lassen sich sowohl ein-wortige Parameter wie suchwert1 behandeln wie auch Parameter wie "einer mit Leerzeichen".
Wieso sollte das bei meinem Vorschlag nicht gehen?Grüße
bastla
[Edit] No problem - ich hatte mich nur vorweg schon vergewissert, dass das "/c:" auch da war, und mich deshalb etwas gewundert ... [/Edit]
Zitat von @bastla:
Schön, dass Du Dich des Array-Themas annimmst (ich hatte mich, nicht nur feiertagsbedingt, davor gedrückt ) ...
Hallo bastla,Schön, dass Du Dich des Array-Themas annimmst (ich hatte mich, nicht nur feiertagsbedingt, davor gedrückt ) ...
was stimmt nicht mit uns, das wir bei dem Wetter vor der Kiste sitzen
Gruß
LotPings
Hallo Mario!
[OT]
[/OT]
Grüße
bastla
[Edit] @Biber: Ja, ja - zu Deiner, meiner, seiner Zeit war ja sowieso und überhaupt alles besser - hatte neulich auch Kollege sysad hier schon vermerkt ... [/Edit]
[OT]
Habe gerade gestern meinen Kurs "Computerschreiben in 4 Stunden" (10 Finger blilnd) beendet und muss wohl noch etwas üben
Zu meiner Zeit durfte man(n) sich nach dem "Blindschreiben" aber zumindest das Ergebnis ansehen (und das Nachkorrigieren geht heutzutage, wo kaum noch Durchschläge erzeugt werden , eigentlich viel leichter - obwohl, das war damals, im vorigen Jahrtausend, wenn ich mich recht entsinne, ja eine Schreibmaschine) ...[/OT]
Grüße
bastla
[Edit] @Biber: Ja, ja - zu Deiner, meiner, seiner Zeit war ja sowieso und überhaupt alles besser - hatte neulich auch Kollege sysad hier schon vermerkt ... [/Edit]
[OT]
Moin Mario.Steinberg,
Beim heutigen Blindschreiben auf einer maschinengemalten iPad-Tastatur hörst du natürlich nix mehr raus...
--> ist also alles entschuldigt.
Andererseits... *grybel*....
... wenn die nicht mehr tastbaren iPad-Tasten die Begründung für die Rechtschreibfähigkeiten der heutigen Jugend sein sollen,
dann müssten aber ganz viele schon vor PISA einen ergattert haben...
Grüße
Biber
[/OT]
Moin Mario.Steinberg,
Zitat von @Mario.Steinberg:
Habe gerade gestern meinen Kurs "Computerschreiben in 4 Stunden" (10 Finger blilnd) beendet und muss wohl noch etwas üben
Zu meiner Zeit haben die Tasten beim Computerschreiben ja wenigstens noch (unterschiedliche) Klack-Geräusche gemacht.Habe gerade gestern meinen Kurs "Computerschreiben in 4 Stunden" (10 Finger blilnd) beendet und muss wohl noch etwas üben
Beim heutigen Blindschreiben auf einer maschinengemalten iPad-Tastatur hörst du natürlich nix mehr raus...
--> ist also alles entschuldigt.
Andererseits... *grybel*....
... wenn die nicht mehr tastbaren iPad-Tasten die Begründung für die Rechtschreibfähigkeiten der heutigen Jugend sein sollen,
dann müssten aber ganz viele schon vor PISA einen ergattert haben...
Grüße
Biber
[/OT]