Batch, Variable durch Schleife mit xen erweitern
Ralf
- programmiertechnik
0 Ingo Turski0 Ralf
0 Axel Richter0 Ralf
Guten Abend
ich versuche mit Batch folgendes:
set zahl=x
for %%a in (1,1,5) do set zahl=%zahl%x
Dadurch soll aus zahl=x nach Durchlaufen der Schleife zahl=xxxxxx werden. Zahl wird also 5mal durch x erweitert. Funktioniert leider nicht, die Erweiterung erfolgt nur 1mal. Was mache ich falsch?
Danke
Ralf
Hi,
set zahl=x
for %%a in (1,1,5) do set zahl=%zahl%xDadurch soll aus zahl=x nach Durchlaufen der Schleife zahl=xxxxxx werden. Zahl wird also 5mal durch x erweitert. Funktioniert leider nicht, die Erweiterung erfolgt nur 1mal. Was mache ich falsch?
vieles. ;-)
Zunächst mal werden die Parameter durch Space getrennt.
Dann hast Du nur 3 Parameter, wovon einer doppelt ist, und erwartest 5 Durchläufe?
freundliche Grüße
Ingo
Guten Tag
set zahl=x
for %%a in (1,1,5) do set zahl=%zahl%xDadurch soll aus zahl=x nach Durchlaufen der Schleife zahl=xxxxxx werden. Zahl wird also 5mal durch x erweitert. Funktioniert leider nicht, die Erweiterung erfolgt nur 1mal. Was mache ich falsch?
vieles. ;-)Zunächst mal werden die Parameter durch Space getrennt.
Dann hast Du nur 3 Parameter, wovon einer doppelt ist, und erwartest 5 Durchläufe?
Ja, das ist schon so richtig. Es gibt diese Art der Verwendung der for-Schleife. Der erste Parameter gibt an wo der Zähler starten soll (1), der zweite die Schrittweite (jeweils 1 hochzählen) und der dritte wo der Zähler stoppen soll. Jedenfalls funktioniert das bei:
for %%a in (1,1,5) do net send empfaenger nachricht
Oder ist das ein Sonderfall?
Grüße
Ralf
Hallo,
ich versuche mit Batch folgendes:
set zahl=x
for %%a in (1,1,5) do set zahl=%zahl%x
Dadurch soll aus zahl=x nach Durchlaufen der Schleife zahl=xxxxxx werden. Zahl wird also 5mal durch x erweitert. Funktioniert leider nicht, die Erweiterung erfolgt nur 1mal. Was mache ich falsch?
test.bat:
_____________________________________________________________________
echo off
echo Eine Schleife von 1 bis 5 in Schrittweite 1:
for /L %%a in (1,1,5) do echo %%a
echo Das Problem ist, dass innerhalb der Schleife offensichtlich die SET-Anweisung nur einmal zusammengebaut und dann 5 mal ausgeführt wird. Siehe:
pause
echo on
set zahl=x
for /L %%a in (1,1,5) do set zahl=%zahl%x
echo off
pause
echo So könnte es gehen:
set zahl=x
set i=1
:start
set /A i=%i%+1
set zahl=%zahl%x
if not %i%==5 goto start
echo %zahl%
_____________________________________________________________________
viele Grüße
Axel
Guten Abend
for /L %%a in (1,1,5) do set zahl=%zahl%x
Eine Frage nebenbei: Was bewirkt /L?
set /A i=%i%+1
Also ist doch eine Rechnung mit Batch möglich? Ist /A die Anweisung, das folgende (i=%i%+1) als Rechnung/Addition zu behandeln?
Danke jedenfalls für diesen Tipp, dadurch erledigt sich auch die Erweiterung einer Variablen mit mehreren xen. Das hatte nämlich selbst den Zweck, als Zähler zu fungieren.
Grüße
Ralf
Hallo,
for /L %%a in (1,1,5) do set zahl=%zahl%x
Eine Frage nebenbei: Was bewirkt /L?
/L bewirkt, dass ein Loop erfolgt. Ohne /L erwartet FOR nach dem Schlüsselwort IN in den Klammern einen Satz von Dateinamen.
c:> help for | more
...
FOR /L %Variable IN (Start,Schritt,Ende) DO Befehl [Parameter]
Der Satz ist eine Folge von Zahlen von Start bis Ende und der
angegebenen Schrittweite. So erzeugt (1,1,5) die Folge 1 2 3 4 5
und (5,-1,1) erzeugt die Folge (5 4 3 2 1).
...
set /A i=%i%+1
Also ist doch eine Rechnung mit Batch möglich? Ist /A die Anweisung, das folgende (i=%i%+1) als Rechnung/Addition zu behandeln?
Ja, seit Windows NT4.0.
c:> help set | more
...
Dem SET-Befehl wurde eine neue Option hinzugefügt:
SET /A Ausdruck
Die /A-Option gibt an, daß die Zeichenfolge rechts vom Gleichheitszeichen ein numerischer Ausdruck ist, der ausgewertet wird. Das Auswertungsprogramm des Ausdrucks unterstützt dabei die folgenden Vorgänge, entsprechend ihrer Anordnung mit abnehmendem Vorrang:
() - Gruppierung
* / % - arithmetische Operatoren
+ - - arithmetische Operatoren
<< >> - logische Verschiebung
& - bitweise UND
^ - bitweise Exklusives ODER
| - bitweise ODER
= *= /= %= += -= - Zuordnung
&= ^= |= <<= >>=
, - Trennzeichen für Ausdrücke
...
viele Grüße
Axel