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

Batch If Anweisung mit mehreren Bedingungen ?

Frage Entwicklung Batch & Shell

Mitglied: malcomxcia

malcomxcia (Level 1) - Jetzt verbinden

28.06.2013, aktualisiert 14:48 Uhr, 11844 Aufrufe, 9 Kommentare

Tach'en erst mal ! ! !

Ich möchte eine Variable auf mehrere Werte abfragen und irgendwie dreh ich mich im Kreis

Meine Variable lade ich aus einer externen .bat mit call vars.bat und das klappt auch soweit

Beispiel:
Wenn die Variable schritt den Wert 1 oder 4 oder 7 hat dann mach was

Sollte doch so eigentlich gehen oder ?

01.
if %schritt%==1 if %schritt%==4 if %schritt%==7  echo MACH WAS
Gruß
Malcom
Mitglied: bastla
28.06.2013 um 15:03 Uhr
Hallo malcomxcia!

Was Du da machst ist eine UND-Verknüpfung - für ein ODER eher so:
01.
set "Machwas=" 
02.
if %schritt%==1 set "Machwas=True" 
03.
if %schritt%==4 set "Machwas=True" 
04.
if %schritt%==7 set "Machwas=True" 
05.
if defined Machwas echo MACH WAS
Grüße
bastla
Bitte warten ..
Mitglied: malcomxcia
28.06.2013 um 15:16 Uhr
Vielen Dank für die schnelle Antwort ;)

Klappt wunderbar !

Also quasi wenn die If's in einer Zeil stehen erkennt er das als und und wenn untereinander als oder ? Geht das nicht mit OR oder sowas in
der Art ?

Dir ein schönes Wochenende und Danke nochmal
Bitte warten ..
Mitglied: Biber
28.06.2013, aktualisiert um 15:33 Uhr
Moin malcolmxcia,

ein OR gibt es so in dieser Form nicht im Batch.

Wenn du es lieber in einer Zeile hättest, dann vielleicht so:
01.
... 
02.
for %%i in (1 4 7 11) do if [%%i]==[%schritt%] echo machwas mit %%i 
03.
..
Grüße
Biber
Bitte warten ..
Mitglied: malcomxcia
29.06.2013 um 10:23 Uhr
Erst mal Danke für deine Antwort ;)

Was bedutet jetzt das %%i ? Wird darin das Ergebniss der Abfrage abgelegt oder wie kann ich das verstehen ?

Malcom
Bitte warten ..
Mitglied: bastla
29.06.2013 um 11:55 Uhr
Hallo malcomxcia!

Tutorial zur FOR-Schleife

Grüße
bastla
Bitte warten ..
Mitglied: Biber
29.06.2013 um 23:47 Uhr
Moin malcolmxcia,


Zitat von malcomxcia:
Was bedutet jetzt das %%i ? Wird darin das Ergebniss der Abfrage abgelegt oder wie kann ich das verstehen ?
Ich weiss nicht, ob du die Antworten inzwischen aus dem von bastla angegebenen Tutorial bekommen hast.
Dort wird es jedenfalls erklärt - das wiederum ist nicht gerade meine Stärke.

Ich kann dir bestenfalls nahelegen, die von mir gepostete Zeile mal am CMD-Prompt abzuschicken - vorher noch die Variable %schritt% auf einen Wert zu setzen:
nur die ersten beiden Zeilen sind einzugeben - der Rest ist Ausgabe
und das führende ">" ist mein Prompt und wird nicht eingegeben^^
>set schritt=7 
 
>for %i in (1 4 7 11) do if [%i]==[%schritt%] echo machwas mit %i 
 
>if [1] == [7] echo machwas mit 1 
>if [4] == [7] echo machwas mit 4 
>if [7] == [7] echo machwas mit 7 
machwas mit 7 
>if [11] == [7] echo machwas mit 11 
>
Hier ist -meiner Meinung nach - auch für einen Laien nachvollziehbar, was diese FOR-Anweisung bewirkt.

Und - wie in meinem ersten Kommentar als eigentliche Antwort geschrieben:
- ein ODER-Äquivalent ist in der Batch-Syntax nicht vorhanden.
- der FOR-workaround ist nur eine verkürzte Variation von bastlas Mehrzeilenlösung ganz oben.

Grüße
Biber
Bitte warten ..
Mitglied: rubberman
30.06.2013, aktualisiert um 03:11 Uhr
Hallo Zusammen,

das Thema hat mich auf die Idee gebracht, eine unorthodoxe Möglichkeit in den Raum zu stellen
IF mit logisch verknüpften Bedingungen (OR und AND) in Batch

Grüße
rubberman
Bitte warten ..
Mitglied: DeBedenHasen
17.07.2016 um 19:01 Uhr
Hallo an alle!

Ich habe so ungefähr das gleiche Problem: Bei mir wird eine Botschaft nach einer Auswahl (ich simuliere Auswahlmöglichkeiten) immer angezeigt; aber natürlich soll sie nur angezeigt werden, wenn man einen nicht-einprogrammierten Input zurückgibt.

Im Grunde ist es simpel: Input A soll ein Fenster öffnen, alles andere gibt eine Meldung aus. aber ich habe etwas komisches zusammengebastelt, was mich zu Lösung führen sollte, es aber nicht tat...
01.
set failed= 
02.
if %input%==A explorer "shell:startup" 
03.
if NOT %input%==A set "failed=true" 
04.
if defined failed goto ChoiceFailed
Ja, alle Marker sind vorhanden und sowohl input= als auch failed= ist definiert!

Das schlaucht mich schon seit ein paar Tagen...
Bitte warten ..
Mitglied: 129813
17.07.2016 um 20:30 Uhr
01.
if /i "%input%"=="A" ( 
02.
    explorer "shell:startup" 
03.
) else ( 
04.
    goto ChoiceFailed 
05.
)
Regards
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch mit forfiles - Dateiendung filtern - Dateien löschen (2)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Batch & Shell
gelöst Doppelte Dateneinträge per Batch aus Datei löschen? HILFE (5)

Frage von freshman2017 zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordner per Batch in RAR (1)

Frage von kampen zum Thema Batch & Shell ...

Batch & Shell
gelöst Einen Teil eines Textpfades aus einer TXT per Batch entfernen!? (3)

Frage von kampen zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(3)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (41)

Frage von Datsspeed zum Thema Exchange Server ...

Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Off Topic
gelöst Fachzeitschriften als E-Book oder hardcoded? (11)

Frage von KowaKowalski zum Thema Off Topic ...

Windows 10
Windows Store Apps ohne Windows Store installieren (10)

Frage von keefien zum Thema Windows 10 ...