hatzwatz
Goto Top

mit Variablen in einer Windows BATCH innerhalb einer FOR-Schleife rechnen

Hallo,

ich habe ein Problem mit Variablen in einer Windows BATCH Datei:

ich brauche für ein Skript einen inkrementellen Wert und einen Wert, der immer um 1 kleiner ist als der inkrementelle Wert.

Gedacht hatte ich mir das so:

for /L %%i in (10,-1,0) do (
set voriger=%%i-1
[Befehle]
)

Funktionieren tut es leider nicht. Er rechnet mir in der Variable "voriger" nicht den um 1 verkleinerten inkrementellen Wert aus. Habe schon viel im Netz gesucht und viel probiert. Aber es will nicht funktionieren.

Vielleicht hat jemand von euch einen Tip für mich.

Danke und viele Grüße

hatzwatz

Content-Key: 51409

Url: https://administrator.de/contentid/51409

Printed on: April 16, 2024 at 12:04 o'clock

Member: miniversum
miniversum Feb 12, 2007 at 10:38:22 (UTC)
Goto Top
Du brauchst für den set befehl der /a Parameter um zu rechnen. Siehe set/?
set /a voriger=%%i-1

miniversum
Member: hatzwatz
hatzwatz Feb 12, 2007 at 10:47:26 (UTC)
Goto Top
auch mit /a habe ich es probiert. Er rechnet einfach nicht wirklich mit der Variablen - bzw. ich bekomme als voriger immer die gleiche Zahl raus (-1) !?!?
Member: Biber
Biber Feb 12, 2007 at 10:59:59 (UTC)
Goto Top
Moin hatzwatz,

miniversum hat schon Recht.

Zusätzlich musst Du noch, wenn Du INNERHALB der FOR..IN..DO-Klammern mit diesem Wert etwas tun willst, "ankündigen", dass Du diese Variable INNERHALB dieser Anweisung sofort neu auswerten willst.
Dazu gibt es den Befehl "Setlocal EnableDelayedExpansion" und die Variablenschreibweise !var! statt %var%.

@echo off & setlocal EnableDelayedExpansion
for /L %%i in (10,-1,0) do (
set voriger=%%i-1     
@echo Schleifenwert ist %%i --- voriger ist !voriger!
REM.. [Befehle]
)

HTH
Biber
Member: hatzwatz
hatzwatz Feb 15, 2007 at 22:14:14 (UTC)
Goto Top
wenn ich jetzt noch die Variable mit der Option /a setze, dann klappt es! Also:

@echo off & setlocal EnableDelayedExpansion
for /L %%i in (10,-1,0) do (
set /a voriger=%%i-1
@echo Schleifenwert ist %%i --- voriger ist !voriger!
REM.. [Befehle]
)

Vielen Dank !
Member: Biber
Biber Feb 16, 2007 at 07:53:18 (UTC)
Goto Top
Moin hatzwatz,

da hast Du natürlich Recht - wieder mal ein typischer Copy & Paste-Fehler von mir.
Sollte ich mir beides abgewöhnen - dieses Copy & Pasten und das ungetestete Posten von Skizzen. face-wink

Ich korrigiere die Zeile oben nicht.
Kannst Du bitte den Beitrag auf "Erledigt" setzen?
Ich kann es in diesem Bereich des Forums leider nicht...

Schönes Wochenende
Biber
Member: hatzwatz
hatzwatz Feb 16, 2007 at 07:58:29 (UTC)
Goto Top
wo setze ich den denn auf erledigt? Finde keinen Link und kein Button dafür!?!?
Member: Biber
Biber Feb 16, 2007 at 08:13:18 (UTC)
Goto Top
Moin hatzwatz,

oben auf der ursprünglichen Frage (=Deinem Beitrag) auf "Editieren" klicken, danach gibt es mehrere Ankreuzmöglichkeiten.
Dort das Häkchen im Kontrollkästchen "Dieser Beitrag gilt als Gelöst" setzen.

Danke
Biber