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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 51409
Url: https://administrator.de/contentid/51409
Ausgedruckt am: 09.11.2024 um 01:11 Uhr
7 Kommentare
Neuester Kommentar
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%.
HTH
Biber
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
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.
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
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.
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