Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

batch - Werte addieren





Frage

Hallo zusammen, ich möchte gerne in einem Batch-Skript innerhalb einer Schleife einerseits den Wert des Zählers verwenden, zum anderen aber auch diesen Wert + 1. Der folgende Code liefert aber leider nicht das gwünschte Ergebnis. [code] ... for /L %%i IN (1,2,%halbeseitenanzahl%) do ( set /a j = %%i% + 1 echo %j% ) ... [/code] Kann mir jemand weiterhelfen? Danke und beste Grüße guethi

Antwort 1 von Arno_Nym

So richtig weiß ich zwar nicht, was du damit bezwecken willst, aber evtl. geht das eher mit 'ner Subroutine...

...

for /L %%i IN (1,2,%halbeseitenanzahl%) do call :sub1 %%i
goto :ende

:sub1
set /a j = %1 + 1
echo %1, %j%

:ende
...

Arno

Antwort 2 von guethi

Hm...blick ich nicht...

:sub1
set /a j = %1 + 1
echo %1, %j%


was macht das %1 ... müsste das nicht %i sein?

LG
guethi

Antwort 3 von Arno_Nym

%1 ist (wie auch beim Aufruf einer Batchdatei üblich) der erste der Subroutine übergebene Parameter (hier hat %1 also den Inhalt von %%i, da oben :sub1 mit %%i aufgerufen wird).

Eine korrektere Schreibweise meines Beispiels ist übrigens

for /L %%i IN (1,2,%halbeseitenanzahl%) do call :sub1 %%i
goto :ende

:sub1
set /a j = %1 + 1
echo %1, %j%
goto :ende

:ende

(ist wichtig, um :sub1 ordentlich abzuschließen, falls danach in der Batch nochwas gemacht wird, fällt nur in diesem Beispiel nicht auf)
Arno

Antwort 4 von guethi

Ah, jetzt! :-) Vielen Dank!

Wo ich nun gerade einen Batch-kundigen vor mir habe - was hat es denn mit der unterschiedlichen Positionierung der % bei den Variaben auf sich? Mal ist es %i, mal %%i, mal %i% ...

Ich bin in VBA recht fit - bei diesen Batch-Geschichten lerne ich gerade laufen...oder vielmehr krabbeln. ;-)

Liebe Grüße

Christian

Antwort 5 von Arno_Nym

Hmm, mal aufdröseln...

%i nimmt man beim FOR-Befehl direkt auf der Kommandozeile.

for ... %i in ... do echo %i

%%i bei Verwendung des FOR-Befehls in einer Batch:

for ... %%i in ... do echo %%i

%i% wäre eine normale Variable, die vorher mit SET gesetzt wurde:

set i = Blabla
echo %i%

Arno

Antwort 6 von guethi

Vielen Dank ... ich sehe schon, es wird ein langer Weg :-).

Viele Grüße

Christian