Frage For Schleife zählt von 1 bis n in einem Windows-Bat-Skript


Ich muss einen Windows-Befehl n mal innerhalb einer Fledermaus-Skriptdatei ausführen. Ich weiß, wie man das in verschiedenen Programmiersprachen macht, aber es gelingt mir nicht, es in der Windows-Befehlszeile richtig zu machen :-(

Ich würde so etwas erwarten

for(int i = 0; i < 100; i++) {
   // do something
}

oder auch das (wenn auch nicht ganz ernst)

1.upto(100, {
   // do something
}) 

Vielen Dank!

BEARBEITEN

Ich kann ein Programm in Java, Perl, C oder was auch immer schreiben, das ein Fledermaus-Skript erzeugt, das so aussieht

for %%N in (1 2 3 4 5 6 7 8 9 10 11 12) do echo %%N

und so weiter. Oder sogar "besser":

echo 1
echo 2
echo 3
echo 4
echo 5
echo 6
echo 7
echo 8
echo 9
echo 10
echo 11
echo 12

und dann führe es aus ... Aber die Sache ist, dass ich einen präzisen Weg brauche, um eine Reihe von Zahlen anzugeben, die durchlaufen werden sollen innerhalb das Skript.

Vielen Dank!


22
2017-08-26 14:09


Ursprung


Die Antworten hier sind vollkommen gut, aber für die Liebe Gottes ... Batch? "Ja wirklich?" Ich würde sehr empfehlen, in eine modernere Sprache zu wechseln. - EBGreen
Es hört sich nicht so an, als hätte er eine Wahl. - wolfgangsz
Ich habe nichts gesehen, was bedeutet, dass es keine Wahl gibt. Tatsächlich sagt er, er könne in irgendeiner Sprache schreiben, also würde ich sagen, dass es ohne weitere Informationen so klingt, als hätte er die Wahl. - EBGreen
Leute, ich muss Code, der in einer modernen Sprache von einem Skript geschrieben wird ... - raoulsson
Vielleicht ist es oder nicht erforderlich - manchmal ist es das richtige Werkzeug für den Job. Sie können nicht garantieren, dass Powershell, geschweige denn Bash, Python, Perl usw. in einer Windows XP oder 2003 Server Box installiert werden. Batch ist eine vollkommen akzeptable Lösung. - Goyuix


Antworten:


Sie können es ähnlich tun:

ECHO Start of Loop

FOR /L %i IN (1,1,5) DO (
  ECHO %i
)

Die 1,1,5 wird wie folgt dekodiert:

(start,step,end)

Beachten Sie außerdem, dass Sie, wenn Sie dies in eine Stapeldatei einbetten, das doppelte Prozentzeichen (%%) verwenden müssen, um Ihre Variablen zu kennzeichnen. Andernfalls versucht der Befehlsinterpreter, die Variable% i vor dem Ausführen der Schleife auszuwerten.


38
2017-08-26 14:21



"ECHO Start of Loop" wird bei jedem Schritt ausgeführt, nicht nur beim Start. - Dennis Williamson
Auch mit einem @ sign unterdrückt das Drucken der Befehle, wie sie von der Befehlszeile ausgeführt werden. "... TUN @( ..." - Dennis Williamson
Dies funktioniert nur mit dem / L nach dem "FOR". Warum ist das? - raoulsson
Machen Sie ein For /? und Sie werden finden: FOR / L% Variable IN (Start, Schritt, Ende) DO-Befehl [Befehlsparameter] Das Set ist eine Folge von Zahlen von Anfang bis Ende, nach Schrittbetrag. So würde (1,1,5) die Sequenz 1 2 3 4 5 erzeugen und (5, -1,1) würde die Sequenz erzeugen (5 4 3 2 1) - EBGreen
Es ist besser zu benutzen %%i in Ihrem Text und fügen Sie einen Kommentar hinzu, dass es ist %i für die direkte Ausführung an der Befehlszeile. Die meisten Benutzer werden es in BAT-Datei testen und versuchen, den Grund zu finden, warum sie Fehler bekommen (wie ich). - i486


Syntax ist

FOR %%A IN (1 2 3) DO ECHO %%A

Guter Artikel Hier und XP Besonderheiten Hier


8
2017-08-26 14:14





Direkt von der Kommandozeile aus:

for /L %n in (1,1,100) do @echo %n

Verwenden einer Batch-Datei:

@echo off
for /L %%n in (1,1,100) do echo %%n

Anzeigen:

1
2
3
...
100

5
2017-09-10 14:50



Was ist, wenn die Zahlenfolge 0001 bis 00100+ usw. ist? - nwgat