
130834
14.09.2016
(Batch) Nummern vergleichen
ich weiss, dummes Problem, aber Ich finde nichts auf Google.
Also ich habe eine FOR schleife die bei jedem Durchgang eine variable um 1 erhöht.
Damit ich eine 4 Charakter lange Nummer ( 0000 ) in einen Namen einbauen kann, die sonst von der /a option entfernt werden habe ich einen Algorithmus entwickelt der abgleicht in welchem bereich von 1-9999 sich die Zahl befindet. ich vergleiche das hiermit
Aber ich kriege es nicht gebacken, das ich daraus sortierte zahlen herausbekomme da aus irgendeinem grund If "2" LSS "10" ( echo true ) immer mit true endet, da nichts mit 1 und 2 mit 0 verglichen wird,
also " 2" mit "10" was in " " grösser als "1" und "2" grösser als "0" endet, und mit eine Falsche angabe gibt. Wenn jemand einen einfacheren Weg hat, das umzusetzen nur her damit :D
kann mir da jemand helfen? wäre sehr nett, danke!
~clragon
Also ich habe eine FOR schleife die bei jedem Durchgang eine variable um 1 erhöht.
Damit ich eine 4 Charakter lange Nummer ( 0000 ) in einen Namen einbauen kann, die sonst von der /a option entfernt werden habe ich einen Algorithmus entwickelt der abgleicht in welchem bereich von 1-9999 sich die Zahl befindet. ich vergleiche das hiermit
if "0!var!" LSS "10" ( set "Number=!Number:~0,-1!!var!" & exit /b )
if "!var!" GEQ "10" ( if "0!var!" LSS "100" set "Number=!Number:~0,-2!!var!" & exit /b )
if "!var!" GEQ "100" ( if "0!var!" LSS "1000" set "Number=!Number:~0,-3!!var!" & exit /b )
if "!var!" GEQ "1000" set "Number=!var!" & exit /b
if "!var!"=="9999" ( goto greatE )
Aber ich kriege es nicht gebacken, das ich daraus sortierte zahlen herausbekomme da aus irgendeinem grund If "2" LSS "10" ( echo true ) immer mit true endet, da nichts mit 1 und 2 mit 0 verglichen wird,
also " 2" mit "10" was in " " grösser als "1" und "2" grösser als "0" endet, und mit eine Falsche angabe gibt. Wenn jemand einen einfacheren Weg hat, das umzusetzen nur her damit :D
kann mir da jemand helfen? wäre sehr nett, danke!
~clragon
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 315250
Url: https://administrator.de/forum/batch-nummern-vergleichen-315250.html
Ausgedruckt am: 06.05.2025 um 02:05 Uhr
3 Kommentare
Neuester Kommentar

Hi again.
Don't enclose the numbers with quotation marks "" this will force a string instead of a number comparison !!
And the == comparison operator always results in a string comparison. Use EQU instead.
See "Test Numeric values" in the following link:
http://ss64.com/nt/if.html
Regards
Don't enclose the numbers with quotation marks "" this will force a string instead of a number comparison !!
And the == comparison operator always results in a string comparison. Use EQU instead.
See "Test Numeric values" in the following link:
http://ss64.com/nt/if.html
Regards

Das Problem läßt sich doch auch eleganter lösen.
Wenn die Zählvariable immer mehr Stellen hat kann man doch
zur Not eine "normalisierte" Zahl mitführen, Set /A
kann in einem Befehl mehrere Berechnungen drchführen
Gruß
LotPings
Wenn die Zählvariable immer mehr Stellen hat kann man doch
zur Not eine "normalisierte" Zahl mitführen, Set /A
kann in einem Befehl mehrere Berechnungen drchführen
@echo off & setlocal EnableExtensions EnableDelayedExpansion
Set X=10000
For /L %%A in (95,6,200) Do (
Set /A X+=%%A, Y=X-10000
Set /P ="X=!X:~-4! , Y=!Y! " <NUL
if !Y! gtr 1000 (
Echo X Groesser 1000
) else (
Echo X kleiner gleich 1000
)
)
23:21:45 C:\Test\2016-09\14______________________________
> Zahlstellen.cmd
X=0095 , Y=95 X kleiner gleich 1000
X=0196 , Y=196 X kleiner gleich 1000
X=0303 , Y=303 X kleiner gleich 1000
X=0416 , Y=416 X kleiner gleich 1000
X=0535 , Y=535 X kleiner gleich 1000
X=0660 , Y=660 X kleiner gleich 1000
X=0791 , Y=791 X kleiner gleich 1000
X=0928 , Y=928 X kleiner gleich 1000
X=1071 , Y=1071 X Groesser 1000
X=1220 , Y=1220 X Groesser 1000
X=1375 , Y=1375 X Groesser 1000
X=1536 , Y=1536 X Groesser 1000
X=1703 , Y=1703 X Groesser 1000
X=1876 , Y=1876 X Groesser 1000
X=2055 , Y=2055 X Groesser 1000
X=2240 , Y=2240 X Groesser 1000
X=2431 , Y=2431 X Groesser 1000
X=2628 , Y=2628 X Groesser 1000
Gruß
LotPings