Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 12675 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 ..
Ähnliche Inhalte
Microsoft Office
gelöst Zeitstempelung Arbeitszeit in Excel auswerten (3)

Frage von Andinistrator1 zum Thema Microsoft Office ...

Entwicklung
C sharp Übergabeparameter aus Liste wählbar machen (2)

Frage von MartinAD zum Thema Entwicklung ...

Microsoft Office
gelöst VBA - aktuelle Kalenderwoche ermitteln (3)

Frage von Ghost108 zum Thema Microsoft Office ...

Visual Studio
gelöst SIDs eines Verzeichnisses ermitteln (1)

Frage von joehuaba zum Thema Visual Studio ...

Neue Wissensbeiträge
Viren und Trojaner

Neues Botnetz über IoT-Geräte

Information von certifiedit.net zum Thema Viren und Trojaner ...

Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
Externe IP von innen erreichbar machen (15)

Frage von Windows10Gegner zum Thema Router & Routing ...

Windows Installation
Windows 10 neu installieren (12)

Frage von imebro zum Thema Windows Installation ...

Windows Server
Frage zu Server Rack (11)

Frage von rainergugus zum Thema Windows Server ...