Top-Themen

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

IF mit logisch verknüpften Bedingungen (OR und AND) in Batch

Mitglied: rubberman

rubberman (Level 3) - Jetzt verbinden

30.06.2013 um 03:05 Uhr, 9584 Aufrufe, 3 Danke

Hallo Community,

die Batchsyntax lässt logische Verknüpfungen mehrerer Bedingungen vermissen. Während man ein AND durch simple Aneinanderreihung von IF Anweisungen relativ einfach umsetzen kann, bedient man sich bei OR verschiedener Hilfskonstruktionen.
Hier mal eine Möglichkeit, wie man mit vordefinierten Variablen arbeiten kann, die entsprechenden Batchcode enthalten. Das Ganze beruht auf der Errorlevel-Logik. Man benötig einen Befehl, der den Errorlevel abhängig vom Ergebnis der Einzelvergleiche setzt. CALL ist hierfür geeignet.

01.
@echo off &setlocal 
02.
:: Trick: 
03.
:: (call;) setzt errorlevel 0 
04.
:: (call) setzt errorlevel 1 
05.
 
06.
:: Variablen if, or, and, then definieren. 
07.
for %%i in ("if=(call;)&(if ","or= (call))&&(if ","and= if ","then= (call))&if errorlevel 1 ") do set %%i 
08.
 
09.
 
10.
:: Beispiele 
11.
 
12.
%if% a==a %or% a==b %or% a==c %then% (echo Wahr) else echo Falsch 
13.
%if% a==b %or% a==c %or% a==d %then% (echo Wahr) else echo Falsch 
14.
%if% a==a %and% a==b %and% a==c %then% (echo Wahr) else echo Falsch 
15.
%if% a==a %and% a neq b %and% a neq c %then% (echo Wahr) else echo Falsch 
16.
echo( 
17.
 
18.
set "x=Wert" 
19.
set "y=" 
20.
%if% defined x %or% defined y %then% (echo Wahr) else echo Falsch 
21.
%if% defined x %and% defined y %then% (echo Wahr) else echo Falsch 
22.
echo( 
23.
 
24.
>"1.tmp~" type nul 
25.
2>nul del "2.tmp~" 
26.
%if% exist "1.tmp~" %or% exist "2.tmp~" %then% (echo Wahr) else echo Falsch 
27.
%if% exist "1.tmp~" %and% exist "2.tmp~" %then% (echo Wahr) else echo Falsch 
28.
del "1.tmp~" 
29.
echo( 
30.
 
31.
pause
Während die Kommandozeilen mit den Variablen nun relativ gut zu lesen sind, ist der Inhalt der Variablen if, or, and und then zugegebenermaßen aus dem Zusammenhang gerissen und kaum zu deuten. Also auch nur ein weiteres Workaround und keine endgültige Lösung ...

Quelle: IF THEN syntactic sugar

Grüße
rubberman
Ähnliche Inhalte
Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

Information von BassFishFoxViren und Trojaner4 Kommentare

Ein neues Tierchen ist unterwegs. Allerdings muss m.E. schon Einiges fatal falsch laufen um das Tierchen aktiv werden zu ...

Batch & Shell

Batch-Script für die Messung der Netzwerkgeschwindigkeit

Anleitung von KraemerBatch & Shell10 Kommentare

Moin zusammen, ich habe mich gerade eben hingesetzt, und eines meiner Scripte ein wenig zeigbar überarbeitet. Da die eine ...

Batch & Shell

Batch - ein paar Basics die man kennen sollte

Tipp von PedantBatch & Shell5 Kommentare

Hallo Batchfreunde, in den letzten Tagen habe ich ein paar Dinge über Batch gelernt, die eigentlich zu den Basics ...

Batch & Shell

Batch Übung zum Desktop Switchen

Anleitung von TechnoXBatch & Shell7 Kommentare

Guten Tag, für mich war es eine Trainingsübung. Da ich mich fragte - wie kann ich meine Icons auf ...

Neue Wissensbeiträge
Cloud-Dienste

Neue Exchange Online und Office 365 Limits ab 01.06.2018

Tipp von decathlon vor 2 StundenCloud-Dienste

Achtung für alle Exchange Online Nutzer die es vielleicht übersehen haben. Ab 01. Juni gilt folgendes neues Limit User ...

Humor (lol)
Meine Variante der DSGVO
Tipp von Henere vor 1 TagHumor (lol)4 Kommentare

Datenschutzerklärung Jede gute Website braucht eine Datenschutzerklärung? Ok, dann machen Sie sich auf etwas gefasst. Präambel Artikel 12 der ...

Administrator.de Feedback

Entwicklertagebuch: Datenschutzerklärung nach DS-GVO

Information von admtech vor 2 TagenAdministrator.de Feedback

Hallo Administrator User, Wir respektieren eure Privatsphäre und möchten euch daher auf die Möglichkeiten für den Umgang mit euren ...

Voice over IP

Rufnummernblock aufbrechen nun möglich bei DTAG

Tipp von Datenreise vor 2 TagenVoice over IP

Bei der Telekom ist es seit einigen Tagen laut Aussage der Geschäftskunden-Hotline möglich, eine Rufnummernübernahme auch dann durchzuführen, wenn ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Wieviel Lüfter hat ein HP Elitebook 8730w ?
Frage von -WeBu-CPU, RAM, Mainboards8 Kommentare

Guten Morgen, gestern Abend hat sich bei meinem HP ein/der Lüfter hörbar abgeschaltet oder stark runter geregelt, obwohl das ...

Batch & Shell
Brauche hilf bei einer batch Datei
gelöst Frage von PilllllleBatch & Shell7 Kommentare

hallo, ich versuche mit Hilfe von einer batch- Datei eine bestimmt Zeile aus einer txt- Datei in eine neue ...

Batch & Shell
Brauche Hilfe bei einer batch datai
gelöst Frage von PilllllleBatch & Shell6 Kommentare

hallo ich möchte mithilfe von einer batch datei den aktuell verbundenen Netzwerknamen abfragen lassen für hilfe währe ich sehr ...

Windows Server
Passwort für Terminalserver-Login über IGEL-Client neu vergeben ?
gelöst Frage von WernimanWindows Server6 Kommentare

Hallo, ich bin -verglichen mit euch- ein absoluter Rookie in der Branche, habe aktuell seit meiner Ausbildung gerade den ...