Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Variablen in Batch vergleichen

Frage Entwicklung Batch & Shell

Mitglied: feindflug

feindflug (Level 1) - Jetzt verbinden

13.01.2009, aktualisiert 17:54 Uhr, 19943 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch Abfrage Vergleiche mit Variable goto (4)

Frage von Zunaras zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit zusammengesetzter Variable auf andere Variable zugreifen (2)

Frage von abiber zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch zum Vergleichen der Firefox-Version (2)

Frage von patrick93 zum Thema Batch & Shell ...

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

Frage von clragon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(10)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
Humor (lol)
gelöst Freidach Beitrag (40)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Windows 7
gelöst SSD - Win7 Lags (20)

Frage von ph5555 zum Thema Windows 7 ...

Firewall
gelöst Firewall Firmeneimsatz (19)

Frage von wiesi200 zum Thema Firewall ...