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
GELÖST

Variablen in Batch vergleichen

Frage Entwicklung Batch & Shell

Mitglied: feindflug

feindflug (Level 1) - Jetzt verbinden

13.01.2009, aktualisiert 17:54 Uhr, 18676 Aufrufe, 4 Kommentare

Hallo,

ich bin gerade an Grübeln waran es liegen könnte das ein Vergleich zweier Variablen nicht funktioniert.

@echo off
setlocal enableextensions enabledelayedexpansion
color 0A
REM aus diesem Forum hier, ermittelt freien Speicherplatz auf Laufwerk d in GB
for /f "tokens=3" %%i in ('dir d: /-c^|findstr /c:"Bytes frei"') do set "Frei=%%i"
set GB=%Frei:~,-9%
REM zu Testzwecken Ausgabe des Wertes = 172
echo %GB%
REM Vergleich der beiden Werte Falls Variable GB kleiner als 25 ist soll SIe zu Error springen, anderenfalls zu mache weiter
if "%GB%" LSS "25" goto error

:error
echo Wert ist kleiner als 25
exit

:mache weiter
echo Wert ist größer als 25

Fehler: Sprung immer zu error

Vielen Dank für Eure Hilfe.
Mitglied: bastla
13.01.2009 um 18:04 Uhr
Hallo feindflug und willkommen im Forum!

Da Du Zahlenwerte (und nicht Text) vergleichen willst, musst Du die zu vergleichenden Werte auch als Zahl (und daher ohne Anführungszeichen) angeben.

Hinzu kommt, dass ":error" auf jeden Fall erreicht wird (per Sprung oder weil es ohnedies die nächste Batchzeile ist) - insofern wäre etwa
if %GB% GEQ 25 goto :mache weiter
angebracht.

Grüße
bastla
Bitte warten ..
Mitglied: Biber
13.01.2009 um 18:11 Uhr
Moin feindflug,

willkommen im Forum.
Wenn Du Zahlenwerte vergleichen willst, dann darfst Du keine Anführungszeichen verwenden.
Ohne Anführungszeichen wird die erste/die linke Variable im Vergleich als "Zahl" angenommen, wenn sie mit einer Ziffer beginnt.
So einfach ist die M$-Welt gestrickt.

Außerdem wird die Sprungmarke ":error" auch ohne Sprung immer erreicht.
Also ändere die Zeile sinngemäß:
01.
if  %GB% GEQ  25 goto :weiterAllesPrima 
02.
 
03.
::error 
04.
REM { bla } 
05.
... 
06.
goto :ende 
07.
:: 
08.
:weiterAllesPrima 
09.
REM { bla }
Grüße
Biber



[Edit] Okay, gegenstandslos.... wieder mal zweiter... *winkzz @bastla [/Edit]
Bitte warten ..
Mitglied: tim1986
13.01.2009 um 20:25 Uhr
LOL Bieber VS bastla = ) was für ein wettlauf
Bitte warten ..
Mitglied: GhostScripter
14.01.2009 um 11:13 Uhr
lustig, wenn man es gefunden hat

selbst wenn die if Bedingung nicht zutrifft, geht die Abarbeitung bei der Sprungmarke :error weiter. Es gibt ja keinen Befehl, etwas anderes zu tun. Du solltest also vor dem :error ein goto weiter einfügen. Ob Sprungmarken mit Leerzeichen erlaubt sing, weiss ich nicht, ich lass es lieber. Wenn Du nun die Zahlen noch als Zahlen behandelst (mit set /a und ohne Anführungszeichen in der IF Abfrage) , bist Du auch da auf der sicheren Seite. Und der exit Befehl im Error Unterprogramm ist auch nicht so toll, nim lieber einen Sprung an das Ende der Batch.

01.
@echo off 
02.
setlocal enableextensions enabledelayedexpansion 
03.
color 0A  
04.
REM aus diesem Forum hier, ermittelt freien Speicherplatz auf Laufwerk d in GB 
05.
for /f "tokens=3" %%i in ('dir d: /-c^|findstr /c:"Bytes frei"') do set "Frei=%%i"  
06.
set /A GB=%Frei:~,-9% 
07.
REM zu Testzwecken Ausgabe des Wertes = 172 
08.
echo %GB%  
09.
REM Vergleich der beiden Werte Falls Variable GB kleiner als 25 ist soll SIe zu Error springen, anderenfalls zu mache weiter 
10.
if %GB% LSS 25 goto error 
11.
 
12.
goto weiter 
13.
:error 
14.
echo Wert ist kleiner als 25 
15.
goto :EOF 
16.
 
17.
:weiter 
18.
echo Wert ist größer als 25
exit
GS
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst FOR Loop Variablen ( Batch ) (2)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Variablen Zusammenbauen 2.0 ( Batch ) (6)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst Grosses Variablen Problem ( Batch) (30)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst (Batch) Nummern vergleichen (3)

Frage von clragon zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...