Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
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...

Anzall der Übergabeparameter ermitteln sowie Parameter auswerten

Frage Entwicklung Batch & Shell

Mitglied: Mario.Steinberg

Mario.Steinberg (Level 1) - Jetzt verbinden

03.06.2010, aktualisiert 18.10.2012, 11880 Aufrufe, 11 Kommentare

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
01.
if %1 != "wert1" | 
02.
if %1 != "wert2" | 
03.
if %1 != "wert3" ( 
04.
echo "Fehler" 
05.
goto eof 
06.
)
Schon mal danke und Gruß,
Mario
Mitglied: bastla
03.06.2010 um 10:55 Uhr
Hallo Mario!

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)
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:
if "%~3" neq "" echo Parameter 3: %3
Ansonsten (aber tatsächlich nur zum Zählen):
01.
@echo off & setlocal 
02.
set /a Par=0 
03.
:Loop 
04.
if "%~1"=="" goto :Done 
05.
set /a Par+=1 
06.
shift 
07.
goto :Loop 
08.
 
09.
:Done 
10.
echo %Par% Parameter uebergeben
Grüße
bastla
Bitte warten ..
Mitglied: Biber
03.06.2010 um 13:26 Uhr
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:
01.
@echo off & setlocal 
02.
For %%i in (%*) do if /i "%%~i" equ "Suchwert1" goto :myStart 
03.
For %%i in (%*) do if /i "%%~i" equ "Mein Suchwert2" goto :myStart 
04.
(echo Parameter "Suchwert" nicht gefunden.)  & pause & goto :eof 
05.
 
06.
:mystart 
07.
Echo hier is' Label :myStart 
08.
::  ... { eigentlicher Nutz-Batch 
09.
goto :eof
Damit lassen sich sowohl ein-wortige Parameter wie suchwert1 behandeln wie auch Parameter wie "einer mit Leerzeichen".

Beispielaufruf:
01.
>e:\schnipsel\chkparms sdfa asdfas wearqw nottingham 
02.
Parameter "Suchwert" nicht gefunden. 
03.
Drücken Sie eine beliebige Taste . . . 
04.
 
05.
>e:\schnipsel\chkparms sdfa asdfas wearqw suchwert1 
06.
hier is' Label :myStart 
07.
 
08.
>e:\schnipsel\chkparms sdfa asdfas wearqw "mein suchwert2" 
09.
hier is' Label :myStart
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
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]
Bitte warten ..
Mitglied: LotPings
03.06.2010 um 13:28 Uhr
Zitat von bastla:
Ansonsten (aber tatsächlich nur zum Zählen):
Wobei man den Zähler auch für ein Pseudo Array nutzen kann:
01.
:: Mario.cmd  administrator.de 2010-06-03 
02.
@echo off & setlocal 
03.
set Par=100 
04.
:Loop 
05.
if "%~1"=="" goto :Done 
06.
set /a Par+=1 
07.
Set "Par[%Par:~-2%]=%~1" 
08.
shift 
09.
goto :Loop 
10.
 
11.
:Done 
12.
echo %Par:~-2% Parameter uebergeben 
13.
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:
01.
:: Mario2.cmd  administrator.de 2010-06-03 
02.
@echo off & setlocal 
03.
For %%A in ("wert1" "wert2" "wert3") Do If /i %%A EQU "%~1" goto :Label_%%~A 
04.
Echo "Fehler" 
05.
Exit /B 1 
06.
 
07.
:Label_wert1 -------------------------------------------------------- 
08.
Echo Label_wert1 
09.
Goto :Eof 
10.
 
11.
:Label_wert2 -------------------------------------------------------- 
12.
Echo Label_wert2 
13.
Goto :Eof 
14.
 
15.
:Label_wert3 -------------------------------------------------------- 
16.
Echo Label_wert3 
17.
Goto :Eof
Beispiel Ausgabe
>mario2 wert2 
Label_wert2
Feiertagsgrüße aus NRW

Edit hatte vesehentlich die 2.Batch doppelt eingefügt. If mit /i ergänzt.
Bitte warten ..
Mitglied: bastla
03.06.2010 um 13:31 Uhr
@Biber
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]
Bitte warten ..
Mitglied: bastla
03.06.2010 um 13:34 Uhr
Hallo LotPings!
Wobei man den Zähler auch für ein Pseudo Array nutzen kann:
Schön, dass Du Dich des Array-Themas annimmst (ich hatte mich, nicht nur feiertagsbedingt, davor gedrückt ) ...

Grüße
bastla
Bitte warten ..
Mitglied: LotPings
03.06.2010 um 13:43 Uhr
Zitat von bastla:
Schön, dass Du Dich des Array-Themas annimmst (ich hatte mich, nicht nur feiertagsbedingt, davor gedrückt ) ...
Hallo bastla,
was stimmt nicht mit uns, das wir bei dem Wetter vor der Kiste sitzen

Gruß
LotPings
Bitte warten ..
Mitglied: bastla
03.06.2010 um 13:47 Uhr
Hallo LotPings!
was stimmt nicht mit uns, das wir bei dem Wetter vor der Kiste sitzen
Kann ich nur für mich beantworten: Eine in dieser Hinsicht falsche Berufswahl (mit der ich aber trotzdem gut leben kann) ...

Grüße
bastla
Bitte warten ..
Mitglied: Mario.Steinberg
03.06.2010 um 14:19 Uhr
Danke für die Antworten und sorry für die Fehler im Header.

Habe gerade gestern meinen Kurs "Computerschreiben in 4 Stunden" (10 Finger blilnd) beendet und muss wohl noch etwas üben

Gruß,
Mario
Bitte warten ..
Mitglied: bastla
03.06.2010, aktualisiert 18.10.2012
Hallo Mario!

[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]
Bitte warten ..
Mitglied: Biber
03.06.2010 um 14:44 Uhr
[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.
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]
Bitte warten ..
Mitglied: bastla
03.06.2010 um 17:48 Uhr
Hallo Mario!

[More OT]
Sagt Dir der Begriff "Verschlimmbesserung" etwas? Wie ich gerade beim Betrachten des Threadtitels
Anzall der Übergabeparameter ermitteln sowie Parameter auswerten
darauf gekommen bin, weiß ich jetzt aber auch nicht so genau ...
[/More OT]

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst New-ADUser (optional Parameter) (13)

Frage von mc-doubleyou zum Thema Batch & Shell ...

Windows Update
Package Publisher - Copy has failed falscher Parameter

Frage von Belloci zum Thema Windows Update ...

DNS
Hostnames für mehrere IPs ermitteln (3)

Frage von Oneil-1989 zum Thema DNS ...

Python
gelöst PHP Skript via Python starten mit JSON Objekt als Parameter (3)

Frage von nullacht15 zum Thema Python ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...