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

gelöst Batch If-Anweisung kleiner oder gleich mit negative Zahlen

Mitglied: moiko89

moiko89 (Level 1) - Jetzt verbinden

16.05.2012 um 14:30 Uhr, 8608 Aufrufe, 6 Kommentare

Hallo Leute

Ich bin hier gerade auf ein kleines Problem gestoßen für welches ich keine Lösung finde,
und zwar:
habe ich eine kleine Rechnung in einer Batch gebastelt die eigl. immer in den Minusbereich kommt und sobald das passiert
soll eine If-Anweisung einen goto-Befehl auslösen, allerdings rasselt er durch die IF und er macht einfach weiter im Text.
An was kann das denn liegen?
Hier mal ein Codebeispiel:

01.
set /a zahl1=10 
02.
set /a zahl2 =20 
03.
set /a ergebnis=%zahl2%-%zahl1% 
04.
 
05.
if "%ergebnis%" LEQ "0" goto minus 
06.
:minus 
07.
echo Das Ergebnis ist 0 oder kleiner als 0.
Mitglied: bastla
16.05.2012 um 15:04 Uhr
Hallo moiko89 und willkommen im Forum!

Es passiert nach dem "if" ja nix, was verhindern würde, dass die Zeile 7 erreicht wird - zB ein "goto :eof" unmittelbar nach Zeile 5 würde das ändern ...

Außerdem führst Du keinen zahlenmäßigen, sondern einen Textvergleich durch (zumindest solange es noch die Anführungszeichen in Zeile 5 gibt) - das wäre allerdings nur relevant, wenn Du zB "15" mit "3" vergleichen würdest (richtig ist's aber trotzdem nicht ) ...

Grüße
bastla
Bitte warten ..
Mitglied: mak-xxl
16.05.2012 um 15:10 Uhr
Moin moiko89,

besser (für alle 3 Fälle) so, beachte dabei Zuweisung, Berechnung, Vergleich und GOTO):
01.
@echo off 
02.
set /a "zahl1=10" 
03.
set /a "zahl2=20" 
04.
set /a "ergebnis=%zahl1%-%zahl2%" 
05.
 
06.
if %ergebnis% GTR 0 goto :plus 
07.
if %ergebnis% EQU 0 goto :gleich 
08.
if %ergebnis% LSS 0 goto :minus 
09.
 
10.
:plus 
11.
echo Das Ergebnis ist groesser als 0. 
12.
goto :eof 
13.
 
14.
:gleich 
15.
echo Das Ergebnis ist gleich 0. 
16.
goto :eof 
17.
 
18.
:minus 
19.
echo Das Ergebnis ist kleiner als 0. 
20.
goto :eof
Und neben den Unzulänglichkeiten: Wenn Du
set /a ergebnis=%zahl2%-%zahl1%
- also 20-10 rechnest, wird nix negativ ...

[Edit]Wie immer zu langsam ...[/Edit]

Einen angenehmen Feiertag wünscht mit freundlichen Grüßen von der Insel - Mario
Bitte warten ..
Mitglied: moiko89
18.05.2012 um 07:49 Uhr
Hey vielen Dank für die Antworten.
Hatte die Konvertierung in Text total übersehen, also es lag im Endeffekt an die ""

Schöne Grüße
Bitte warten ..
Mitglied: bastla
18.05.2012 um 09:34 Uhr
Hallo moiko89!
also es lag im Endeffekt an die ""
Nicht wirklich (die Konvertierung kann sich aber unter anderen Umständen natürlich auch auswirken) - wenn Du nochmals Deinen oben geposteten Code betrachtest wirst Du sehen, dass ganz unabhängig vom Ergebnis der Abfrage in Zeile 5 die Zeile 6 immer erreicht wird (entweder, weil tatsächlich ein Sprung zu ":minus" erfolgt, oder, weil ohne Sprung einfach die Zeile 6 im Ablauf folgt) - daher entweder, wie von Mario gezeigt, alle Möglichkeiten abtesten und entsprechend verzweigen, oder gleich nach der Zeile 5 das tun, was im Fall "größer Null" erforderlich ist und vor dem Label ":minus" einen Sprung zu einem weiteren Teil des Batches einbauen oder per "goto :eof" den Batch beenden ...

Grüße
bastla
Bitte warten ..
Mitglied: moiko89
18.05.2012 um 13:01 Uhr
Hm ja okay, jetzt wo ich es nochmal nachgetestet habe muss ich euch recht geben.

Ich hab das jetzt so gelöst und es scheint zu funktionieren:

01.
@echo off 
02.
set /p zahl1=zahl1: 
03.
set /p zahl2=zahl2: 
04.
set /a ergebnis=%zahl1%-%zahl2% 
05.
echo %ergebnis% 
06.
 
07.
if %ergebnis% LEQ 0 ( 
08.
goto kleinerals) 
09.
 
10.
:grosserals 
11.
echo Das Ergebnis ist groesser als Null. 
12.
pause 
13.
 
14.
:kleinerals 
15.
echo Das Ergebnis ist kleiner als Null. 
16.
pause 
17.
 

Schöne Grüße moiko89
Bitte warten ..
Mitglied: bastla
18.05.2012 um 14:18 Uhr
Hallo moiko89!

Jetzt wird aber für positive Werte nach der Pause in Zeile 12 immer noch der Teil ab Zeile 14 zusätzlich ausgeführt ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Unix Shell-Script: IF-Anweisung
gelöst Frage von newit1Batch & Shell6 Kommentare

Hallo zusammen, kann ich mit einer IF-Anweisung prüfen, ob in einer lokalen CSV-Datei in der ersten Spalte überall eine ...

PHP

Hilfe bei PHP IF-Anweisung für Joomla

Frage von d4shoerncheNPHP2 Kommentare

Guten Morgen, ich frickel mir gerade eine Joomla-Extension nach meinen Wünschen und Anforderungen über die Template-Overrides um. Das funktioniert ...

Batch & Shell

Kleines Batch Script - if else mit mehreren Statements?!

Frage von menaceBatch & Shell2 Kommentare

Hallo zusammen, ich bräuchte mal bitte etwas Hilfe, bei einer kleinen, wahrscheinlich absolut simplen, batch Problematik: Ich habe hier ...

Microsoft Office

Word 2007 Briefkopf mit 2 if Anweisungen

gelöst Frage von mreskeMicrosoft Office13 Kommentare

Hallo ich möchte in einer Word Datei jeweils die ERSTE und LETZTE Seite keine Seitenzahl angeben. Bei allen anderen ...

Neue Wissensbeiträge
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 1 TagSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 1 TagMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 1 TagHardware12 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++27 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux27 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless22 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL19 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...