Ich muss einen Befehl 100-200 Mal ausführen, und meine Forschung hat bisher ergeben, dass ich entweder 100 Kopien dieses Befehls kopieren / einfügen oder eine for
Schleife verwenden for
müsste , aber die Schleife erwartet eine Liste von Elementen, daher würde ich benötigen 200 zu bearbeitende Dateien oder eine Liste mit 200 Elementen, die den Punkt zunichte machen.
Ich würde lieber kein C-Programm schreiben und die Länge der Dokumentation durchgehen müssen, warum ich ein anderes Programm schreiben musste, um mein Programm zu Testzwecken auszuführen. Eine Änderung meines Programms selbst ist ebenfalls keine Option.
a
Wie würde ich einen Befehl bei einem Befehl N
über ein Batch-Skript ausführen ?
Hinweis: Ich möchte keine Endlosschleife
Hier ist zum Beispiel, wie es in Javascript aussehen würde:
var i;
for (i = 0; i < 100; i++) {
console.log( i );
}
Wie würde es in einem Batch-Skript unter Windows aussehen?
quelle
Antworten:
for /l
ist dein Freund:Beginnt bei 1, Schritt für Schritt und endet bei 100.
Verwenden Sie zwei
%
s, wenn es sich um eine Batch-Datei handelt(Das ist eines der Dinge, die ich an Windows-Skripten wirklich sehr hasse.)
Wenn Sie für jede Iteration der Schleife mehrere Befehle haben, gehen Sie folgendermaßen vor:
oder in einer Batch-Datei
Schlüssel:
/l
bedeutet, dass derfor
Befehl numerisch ausgeführt wird, anstatt eine Reihe von Dateien zu%x
bearbeiten. Dies ist die Schleifenvariable(Startwert, Wertinkrement, Endbedingung [einschließlich]).
quelle
%x
ist die Schleifenvariable./l
(Nicht\l
) bedeutet, dass der Befehl for numerisch und nicht mit einer Reihe von Dateien ausgeführt wird.for /l %x in (1, 1, 100) do echo %x
bekomme ich "x nicht erwartet".Und um die Dateien eines Verzeichnisses zu durchlaufen:
Sie müssen "enableDelayedExpansion" und! FILENAME! anstelle von $ FILENAME $. Im zweiten Fall interpretiert DOS die Variable nur einmal (bevor sie in die Schleife eintritt) und nicht jedes Mal, wenn sich das Programm wiederholt.
quelle
Vorlage für eine einfache, aber gezählte Schleife:
Beispiel: Sagen Sie "Hallo Welt!" 5 mal:
In diesem Beispiel wird Folgendes ausgegeben:
quelle
set /p loopcount="How many loops? "
damit Sie es mit Benutzereingaben ausführen können. Es ist praktischer.Sie können dies auch anstelle einer
for
Schleife versuchen :Es ist ziemlich klein und ich benutze es die ganze Zeit.
quelle
Oder Sie können eine Variable um die Anzahl der Schleifen dekrementieren / inkrementieren:
Die Nutzung
FOR /L
ist natürlich die Autobahn und dies ist die Seitenstraße, die länger dauert, aber zum selben Ziel führt.quelle
Sie können Folgendes tun, um die FOR-Schleife zu vermeiden.
quelle
Sie können dies ohne
for
Aussage tun ^. ^:Es hat Grundverständnis. Probieren Sie es einfach aus. : P.
quelle
Sehr einfache Methode zum Implementieren von Schleifen in der Cmd-Programmierung mithilfe von Labels
quelle
DOS bietet hierfür keine sehr eleganten Mechanismen, aber ich denke, Sie können mit angemessenem Aufwand immer noch eine Schleife für 100 oder 200 Iterationen codieren. Obwohl es keine numerische
for
Schleife gibt, können Sie eine Zeichenfolge als "Schleifenvariable" verwenden.Codieren Sie die Schleife mit GOTO und
SET X=%X%@
fügen Sie für jede Iteration ein weiteres@
Vorzeichen zu einer Umgebungsvariablen X hinzu. und um die Schleife zu verlassen, vergleichen Sie den Wert von X mit einer Zeichenfolge aus 100 (oder 200)@
Zeichen.Ich habe nie gesagt, dass dies elegant ist, aber es sollte funktionieren!
quelle
/a
Option desSET
Befehls wertet einen numerischen Ausdruck für den Wert auf der rechten Seite aus. Siehe die Doucmentation für SET . Es ist nicht erforderlich, den Verkettungstrick auszuführen.set /a
in DOS keine gibt . Zum Glück ist die Frage fürcmd
... (zum Zeitpunkt dieser Antwort war der Fragentitel "DOS Batch Script Loop"Ich bin mir nicht sicher, ob eine solche Antwort bereits eingereicht wurde, aber Sie könnten Folgendes versuchen:
Die Variable% var% erhöht sich um eins, bis sie 100 erreicht, wo das Programm dann ausgibt, dass die Ausführung beendet ist. Auch hier bin ich mir nicht sicher, ob dies eingereicht wurde oder so, aber ich denke, es ist möglicherweise das kompakteste.
quelle
Ich benutze das. Es ist ungefähr dasselbe wie die anderen, aber es ist nur eine andere Art, es zu schreiben.
quelle
Die Antwort hängt wirklich davon ab, wie gut Sie mit Batch vertraut sind. Wenn Sie nicht so erfahren sind, würde ich empfehlen, eine Schleifenvariable zu erhöhen:
Wenn Sie jedoch mehr Erfahrung mit Chargen haben, würde ich empfehlen, je praktischer
for /l %loop in (1, 1, 10) do echo %loop
die bessere Wahl ist.quelle
Hier ist ein Vorlagenskript, das ich verwenden werde.
Wenn es startet, schaltet es das Echo aus und danach läuft die "Schleife", aber an dieser Stelle geht es weiter zur "Schleife" (ich hoffe, das hilft.)
quelle
eine völlig fehlerfreie Schleife
Sie können es bearbeiten, indem Sie die 10 in Zeile 5 in eine beliebige Zahl ändern, um anzugeben, wie oft die Schleife ausgeführt werden soll.
quelle
(BEARBEITET) Ich habe es so gemacht, dass es nach 100 Mal aufhört
Dies erzeugt 4 Zufallszahlen pro 1 Sekunde 100 Mal. Nehmen Sie das "Timeout 1 / nobreak> nul" heraus, damit es super schnell geht.
quelle
Verwenden Sie wahrscheinlich goto like
Dies macht eine inf (Endlosschleife).
quelle
infinite
ist ziemlich viel größer als die angeforderte100-200 times
, so dass dies die Frage nicht beantwortet.Ich habe 2 Antworten Methoden 1: Fügen Sie Javascript in Batch ein
(Ich weiß nicht viel über JavaScript)
Methode 2: Schleife im Stapel
(Danke FluorescentGreen5)
quelle