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, 14428 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 ...

Windows Server

Bluescreen DRIVER IRQL NOT LESS OR EQUAL tcpip sys ntoskrnl exe

Erfahrungsbericht von YannoschWindows Server19 Kommentare

Hallo zusammen, Problematik: BSOD in unregelmäßigen Abständen auf einem 2008R2 Terminalserver. Lösung: Deinstallation von Avira Server Security Mit dem ...

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 ...

Batch & Shell

Batch Script Editor - Programmvorstellung des Entwicklers

Tipp von wowItsDogeBatch & Shell16 Kommentare

Die bisher verfügbaren Batch Editoren sind entweder verbesserte Text Editoren, bei dem vom Nutzer Programmierkentnisse vorausgesetzt werden, oder haben ...

Neue Wissensbeiträge
Humor (lol)
Das IoT wird schlimmer
Erfahrungsbericht von Henere vor 10 StundenHumor (lol)1 Kommentar

Nun auch schon über den WSUS:

Sicherheit

Win10 1809 und höher erlauben nun das Sperren und Whitelisten von bestimmten Geräten

Tipp von DerWoWusste vor 20 StundenSicherheit1 Kommentar

Vor 1809 konnten nur Geräteklassen gesperrt werden, nun können endlich einzelne Device instance IDs gewhitelistet werden (oder andersherum: gesperrt ...

Windows 10

Hands-On: What is new in the Windows 10 November 2019 Update?

Information von DerWoWusste vor 1 TagWindows 10

Die wenigen (aber zum Teil interessanten) Neuheiten werden in diesem Video sehr schnell erklärt und vorgeführt.

Grafik

Gute Spiele aus der Ubuntu Repository: SuperTuxKart

Information von NetzwerkDude vor 1 TagGrafik2 Kommentare

Fall jemand die Firmenpolicy hat das man Linux Software nur aus dem default Repository installieren kann: Ich habe festgestellt ...

Heiß diskutierte Inhalte
Ubuntu
Ubuntu-Putty hilfe
gelöst Frage von Nickolas.GroheUbuntu53 Kommentare

Hallo Wie ändere ich einen ssh Port auf Linux Ubuntu? LG Nickolas

Netzwerke
VPN auf Firmennetzwerk (Festplatten, Computer) einrichten, aber wie?
Frage von 81083Netzwerke34 Kommentare

Hallo, es ist ein Bisschen frustrierend. Wir haben einen 2012 R2 Server, eine Fritzbox und etwa 10-12 PC die ...

Windows 7
Festplatte in einen anderen PC umziehen lassen
Frage von Ghost108Windows 728 Kommentare

Hallo zusammen, ich bekomme die nächsten Tage einen neuen PC (komplett andere Hardware als in meinem jetzigen) Was für ...

Windows Server
AD, Sysprep, Clone, SID . oh weh
Frage von heifumaWindows Server23 Kommentare

Moin, ich versuche es so kurz wie möglich zu halten: Ist-Zustand: - IT Dienstleister hat Monopol für die bei ...