Zweck:Erstellen Sie Schleifen in Batchdateien

 

Format:DO loop_control

Befehle

[ITERIEREN]

Befehle

[VERLASSEN [N]]

Befehle

ENDDO

 

Loop_control-Formate

 

DO zählen

Tun Sie es für immer

DO varname = start TO end [BY step] [(command)]

TUN WÄHREND Bedingung [(Befehl)]

MACHEN BIS Bedingung [(Befehl)]

TUN SIE BIS ZUM DATETIME Datum Uhrzeit [(Befehl)]

TUN SIE FÜR n [SEKUNDEN | MINUTEN | STUNDEN] [(Befehl)]

DO varname IN [range...] /D"directory" [/I:"text" /S[[+]n] /A:[[-|+]rhsadecijopt /O:[-]acdeginorstuz fileset [(command) ]

DO varname IN [/T"delimiters"] /L stringset [(Befehl)]

DO varname IN /C stringset [(Befehl)]

DO varname IN /L stringset [(Befehl)]

DO Variablenname im /P-Befehl ... [(Befehl)]

DO varname IN /Q stringset [(Befehl)]

DO Varname IN /Y Arrayname [(Befehl)]

DO Varname IN @file [(Befehl)]

 

zählen

Ganzzahl im Bereich [0, 9223372036854775807] oder eine interne Variable oder Variablenfunktion, die einen solchen Wert ergibt und angibt, wie oft die Schleife ausgeführt wird.

Varname

Die Umgebungsvariable, die den aktuellen Wert des Schleifenindex, den aktuellen Dateinamen oder die aktuelle Zeichenfolge oder die aktuelle Zeile einer Datei enthält. Stellen Sie dem Variablennamen kein Präfix voran %.

Anfang, Ende, Schritt

Ganzzahlen im Bereich [-9223372036854775807, 9223372036854775807] oder interne Variablen oder Variablenfunktionen, die solche Werte ergeben und steuern, wie oft die Schleife ausgeführt wird.

Zustand

A bedingter Ausdruck um zu bestimmen, ob die Schleife ausgeführt werden soll oder nicht

Dateigruppe

Ein Dateiname oder eine Liste von Dateinamen, möglicherweise mit Platzhalter

Saitensatz

Ein beliebiger Satz von Zeichenfolgen. Platzhalter werden nicht interpretiert.

Datei

Eine Datei, deren jede Zeile eine Zeichenfolge enthält, für die die Schleife ausgeführt werden soll

Angebot

Ein Datum, eine Uhrzeit, eine Größe oder einen Ausschlussbereich. Höchstens eines von jedem, in beliebiger Reihenfolge.

Befehle

Ein oder mehrere Befehle, die jedes Mal in der Schleife ausgeführt werden sollen. Wenn Sie mehrere Befehle verwenden, müssen diese durch Befehlstrennzeichen getrennt oder in separaten Zeilen platziert werden.

Datum

Das Schleifenbeendigungsdatum im ISO 8601-Format

Zeit

Die Schleifenbeendigungszeit in 24 Stunden hh: mm: ss Format

/EIN:

Attributauswahl

/C

Durchlaufen Sie jedes Zeichen im Ausdruck

/D"Verzeichnis"

Startverzeichnis

/Ich schreibe"

(Übereinstimmungsbeschreibung) Beschreibungsbereich.

/L(iteral)

Mitglieder des kompensieren sind Zeichenfolgen, keine Dateinamen

/O:... (Bestellung)

Sortierung

/P

Analysieren Sie die Ausgabe des Befehls und speichern Sie die nächste Ausgabezeile in Varname jedes Mal, wenn die Schleife ausgeführt wird.

/Q

Wie /L, behandelt jedoch Argumente in doppelten Anführungszeichen (mit eingebettetem Leerzeichen) als einzelnes Argument.

/S

Führen Sie die Schleife im aktuellen Verzeichnis und allen seinen Unterverzeichnissen aus

 

Unterstützungen erweitert Platzhalter, Bereiche und Listen einschließen für die kompensieren. Verwenden Sie Platzhalter mit Vorsicht auf LFN-Volumen; sehen LFN-Dateisuche für weitere Einzelheiten.

 

Anwendungsbereich

 

DO kann verwendet werden Stapeldateien, Aliase oder an der Eingabeaufforderung. Um sie in Aliasnamen oder an der Eingabeaufforderung zu verwenden, müssen Sie den DO in einer einzelnen Zeile definieren und den Hauptteil der DO-Schleife in eine Befehlsgruppe einschließen, die dem DO-Ausdruck folgt. (In einem einzeiligen DO gibt es keine ENDDO-Anweisung). Zum Beispiel:

 

do count=1 bis 10 mal 1 (echo count=%count)

 

Wenn das letzte Argument in der Zeile ein Single ist (, es wird als Beginn einer Befehlsgruppe interpretiert. DO hängt die folgenden Zeilen an (in einer Batch-Datei) oder fordert Sie zu weiteren Eingaben auf (in der Befehlszeile), bis ein Abschluss erfolgt ).

 

Wenn Sie DO auf einem LFN-Laufwerk verwenden, müssen Sie alle Dateinamen in Anführungszeichen setzen, die Leerzeichen oder Sonderzeichen enthalten. Die gleiche Einschränkung kann für Namen gelten, die in der DO-Variablen zurückgegeben werden, wenn Sie sie an übergeben TCC interne Befehle oder andere Befehle, bei denen Dateinamen mit Leerzeichen in Anführungszeichen gesetzt werden müssen. DO setzt zurückgegebene Namen nicht automatisch in Anführungszeichen, selbst wenn Sie Anführungszeichen in das ursprüngliche Argument eingefügt haben.

 

DO legt vier interne Variablen fest:

 

%_do_dirsDie Anzahl der Verzeichnisse, die für die aktuelle DO-Schleife durchlaufen wurden (mit /S). (Das heißt, verschachtelte DOs haben jeweils ihre eigenen _do_dirs, _do_files, _do_errors und _do_loop.)
%_do_filesDie Anzahl der Verzeichniseinträge (Dateien oder Unterverzeichnisse), die für die aktuelle DO-Schleife verarbeitet wurden.
%_do_errorsDie Anzahl der Fehler für die aktuelle DO-Schleife.
%_do_loopDie Häufigkeit, mit der die aktuelle DO-Schleife ausgeführt wurde.

 

Arten von DO-Schleifen

 

DO kann zum Erstellen verschiedener Arten von Schleifen verwendet werden.

 

DO zählenist eine gezählte Schleife. Die Batchdateizeilen zwischen DO und ENDDO werden wiederholt zählen Zeiten.

 

Tun Sie es für immer erzeugt eine Endlosschleife. Du musst benutzen VERLASSEN or GOTO um eine solche Schleife zu verlassen.

 

DO Varname = Start TO Ende [BY Step] ähnelt einer „for-Schleife“ in Programmiersprachen wie BASIC. DO erstellt eine Umgebungsvariable, Varnameund setzt ihn auf den Wert Anfang. If Varname existiert bereits in der Umwelt, es wird überschrieben. DO beginnt dann den Schleifenprozess mit dem Vergleich des Werts von Varname mit dem Wert von Ende. If Step ist positiv oder nicht angegeben, und Varname ist kleiner oder gleich Ende, DO führt die Batchdateizeilen bis zum ENDDO aus. Als nächstes erhöht DO den Wert von Varname entweder der Wert von Step wenn BY Step angegeben ist, bzw 1, und wiederholt den Vergleichs- und Ausführungsprozess bis Varname größer ist als Ende. In diesem Beispiel werden die geraden Zahlen von 2 bis 20 angezeigt:

 

do i = 2 bis 20 mal 2

  echo %i

beenden

 

DO kann auch abwärts statt aufwärts zählen. Wenn Step ist negativ, Varname wird um den absoluten Wert von verringert Step mit jeder Schleife, und die Schleife stoppt, wenn Varname weniger als Ende. Um beispielsweise die geraden Zahlen von 2 bis 20 in umgekehrter Reihenfolge anzuzeigen, ersetzen Sie die erste Zeile des obigen Beispiels durch:

 

do i = 20 zu 2 mal -2

 

TUN WÄHREND Zustand bewertet Zustand jedes Mal durch die Schleife als bedingter Ausdruck Bevor führt die Schleife aus und führt sie nur aus, wenn sie wahr ist. Wenn Zustand is FALSCH Wenn das DO zum ersten Mal ausgeführt wird, wird die Schleife nie ausgeführt.

 

MACHEN BIS Zustand bewertet Zustand als ein bedingter Ausdruck jedesmal nachdem Ausführung der Schleife und wiederholt die Schleife nur, wenn dies der Fall ist FALSCH. Daher werden die Anweisungen innerhalb der Schleife immer mindestens einmal ausgeführt.

 

TUN SIE BIS ZUM DATETIME Datum Zeit Führt die Schleife aus, bis das aktuelle Datum und die aktuelle Uhrzeit gleich oder größer als das angegebene Datum (ISO-Format) und die angegebene Uhrzeit (24-Stunden-Format) sind. Datum und Uhrzeit können entweder im Format JJJJ-MM-TT HH:MM:SS oder JJJJMMTDHHMMSS vorliegen. (Das Datum und/oder die Uhrzeit können eine Variable sein.)

 

TUN SIE FÜR n SEKUNDEN | MINUTEN | STD Führt die Schleife für die angegebene Zeitspanne aus.

 

DO Varname IN Dateigruppe führt die Befehle zwischen DO und ENDDO aus, indem eine Umgebungsvariable erstellt wird, Varnameund es jedem Dateinamen in der gleichzusetzen Dateisatz, ignorieren Elemente, die nicht mit Datei- oder Verzeichnisnamen übereinstimmen. Dies ähnelt dem kompensieren Verwendet in der FÜR Befehl, aber er kann nur Datei- und Verzeichnisnamen enthalten, keine beliebigen Textzeichenfolgen. Wenn Varname bereits in der Umgebung vorhanden ist, wird sie überschrieben (im Gegensatz zur Steuervariablen in FÜR). Beispielsweise:

 

x in *.txt ausführen

 ...

beenden

 

führt die Schleife jeweils einmal aus .TXT Datei im aktuellen Verzeichnis; Jedes Mal durch die Schleife die Variable x wird auf den Namen der nächsten Datei gesetzt, die der Dateispezifikation entspricht. Die Reihenfolge der Übereinstimmungen hängt vom Dateisystem ab und hat keinerlei Bezug zu den Merkmalen der übereinstimmenden Dateinamen.

 

Wenn Sie zwischen DO und ENDDO eine neue Datei erstellen, die in die Dateiliste aufgenommen werden könnte, kann sie in einer Iteration der DO-Schleife erscheinen oder auch nicht. Ob die neue Datei angezeigt wird, hängt von ihrem physischen Speicherort in der Verzeichnisstruktur ab TCC hat keine Kontrolle.

 

Zur Verwendung von Datum, Uhrzeit, Größe, Beschreibung oder Dateiausschluss Bereiche für die kompensieren Platzieren Sie sie direkt vor den Dateinamen, zum Beispiel:

 

x in /[d9-1-2018,9-31-2018] *.txt ausführen

 

DO Varname IN /L Saitensatz führt die Befehle zwischen DO und ENDDO einmal für jedes String-Literal aus Saitensatz, Einstellung Varname an jeden der Reihe nach.

 

DO Varname IN /C Saitensatz führt die Befehle zwischen DO und ENDDO einmal für jedes Zeichen aus Saitensatz (einschließlich Leerzeichen und Sonderzeichen), Einstellung Varname an jeden der Reihe nach.

 

DO Varname IN @Datei führt die Befehle zwischen DO und ENDDO einmal für jede Zeile aus Datei, Einstellung Varname nacheinander auf den Inhalt jedes Einzelnen eingehen. Hüten Sie sich vor Zeichen mit besonderer Bedeutung TCC, wie Umleitungs- und Piping-Symbole, innerhalb der Datei (use SETDOS /X nach Bedarf).

 

Um die Schleife einmal für jede Textzeile in der Zwischenablage auszuführen, verwenden Sie CLIPS: (oder CLIP0: - CLIP9:) als Dateinamen (z.B DO X IN @CLIP:). CLIPS: gibt keine Daten zurück, es sei denn, die Zwischenablage enthält Text. Sehen Redirection Weitere Informationen finden Sie auf CLIPS:.

 

Spezielle DO-Schlüsselwörter: ITERIEREN und VERLASSEN

 

Zwei spezielle Schlüsselwörter, ITERATE und LEAVE, können innerhalb einer DO/ENDDO-Schleife verwendet werden. ITERATE ignoriert die verbleibenden Befehle innerhalb der Schleife und kehrt für eine weitere Iteration zum Anfang der Schleife zurück, es sei denn, DO stellt fest, dass die Schleife beendet ist. LEAVE verlässt die aktuelle DO-Schleife und fährt mit dem Befehl fort, der seinem ENDDO folgt. Beide Schlüsselwörter können beliebig oft wiederholt werden. Sowohl ITERATE als auch LEAVE werden am häufigsten in einer verwendet IF or IFF Befehl (Gruppe):

 

do while "%var" != "%val1"

 ...

 if "%var" == "%val2" verlassen

beenden

 

LEAVE akzeptiert ein optionales numerisches Argument (>=1), das die DO-Verschachtelungsebene angibt, die Sie verlassen möchten. Beispielsweise verlässt „LEAVE 2“ zwei verschachtelte DO-Schleifen. Sie können optional eine Variable als LEAVE-Argument übergeben.

 

Hinweise zur Verwendung

 

  Numerische Eingaben können entweder im Dezimalformat (eine Folge von 0–9 Ziffern) oder im Hexadezimalformat („0x“, gefolgt von einer Folge von 0–F Hexadezimalziffern) eingegeben werden.

 

DO-Schleifen können verschachtelt sein, d. h. Sie können eine DO-/ENDDO-Schleife innerhalb einer anderen DO-/ENDDO-Schleife haben.

 

Sie können alle DO/ENDDO-Schleifen in einer Batchdatei verlassen, indem Sie verwenden GOTO zu einer Zeile nach dem entsprechenden ENDDO. Jedoch, Lesen Sie unbedingt die Warnhinweise About GOTO und DO unter dem GOTO Befehl, bevor Sie GOTO auf andere Weise innerhalb einer DO-Schleife verwenden.

 

Sie können nicht verwenden RÜCKKEHR von einem zurückkehren GOSUB während innerhalb einer DO-Schleife.

 

Hinweis: Verwechseln Sie den DO-Befehl nicht mit dem nicht verwandten optionalen Befehl do Schlüsselwort der FÜR Befehl.

 

Zubehör:

 

/EIN:Wählen Sie die Dateien in a aus DO x IN ... durch ihre angegebenen Attribute. Sehen Attributschalter Informationen zu den Attributen, die folgen können /EIN:.

 

Sie können angeben /A:= , um einen Dialog anzuzeigen, der Ihnen beim Festlegen einzelner Attribute hilft.

 

/CWeisen Sie für jede Schleife das nächste Zeichen (einschließlich Leerzeichen und Sonderzeichen) im Ausdruck der DO-Variablen zu.

 

/D"Verzeichnis"Legen Sie das Startverzeichnis fest (zur Verwendung mit /S). /D unterstützt Windows-Shell-Ordnernamen; sehen CSD für weitere Einzelheiten.

 

/ICH"Text"Wählen Sie Dateien in einem aus DO x IN ... durch Matching Text in ihren Beschreibungen. Sehen Beschreibungsbereiche für weitere Einzelheiten.

 

/LDie folgenden Parameter DO x IN /L sind Zeichenfolgen, keine Dateinamen. Jeder Parameter wird der Schleifensteuervariablen bei aufeinanderfolgenden Durchgängen durch die Schleife der Reihe nach von links nach rechts zugewiesen. /L behandelt doppelte Anführungszeichen nicht als Trennzeichen; Verwenden Sie /Q, wenn Sie Argumente mit eingebettetem Leerzeichen übergeben möchten.

 

/NOptionen deaktivieren:

 

dVersteckte Verzeichnisse überspringen (bei Verwendung mit /S)
jKreuzungen überspringen (bei Verwendung mit /S)

 

/Ö:...Sortieren Sie die Dateien vor der Verarbeitung.

 

Sie können eine beliebige Kombination der folgenden Sortieroptionen verwenden. Wenn mehrere Optionen verwendet werden, wird die Auflistung mit der ersten Sortieroption als Primärschlüssel, der nächsten als Sekundärschlüssel usw. sortiert:

 

nSortieren Sie nach Dateiname und Erweiterung, sofern nicht e ist ausdrücklich enthalten.
-Kehren Sie die Sortierreihenfolge für den nächsten Sortierschlüssel um
aSortieren Sie Namen und Erweiterungen in der Standard-ASCII-Reihenfolge statt numerisch, wenn numerische Teilzeichenfolgen im Namen oder in der Erweiterung enthalten sind.
cSortieren nach Komprimierungsverhältnis
dSortieren nach Datum und Uhrzeit (Älteste zuerst); siehe auch /T:acw
eNach Erweiterung sortieren
gGruppieren Sie zuerst die Unterverzeichnisse und dann die Dateien
iNach Beschreibung sortieren
oNach Eigentümer sortieren
rKehren Sie die Sortierreihenfolge für alle Optionen um
sNach Größe sortiert
tDas gleiche wie d
uUnsortiert
zDas gleiche wie s

 

Die Option /O:... speichert alle übereinstimmenden Dateinamen und führt dann den angeforderten Vorgang aus. Dadurch wird das potenzielle Problem der mehrmaligen Verarbeitung von Dateien vermieden.

 

/PWeisen Sie jeder Schleife die nächste Ausgabezeile zu Befehl zur DO-Variable.

 

/QDie folgenden Parameter DO x IN /Q sind Zeichenfolgen, keine Dateinamen. Jeder Parameter wird der Schleifensteuervariablen bei aufeinanderfolgenden Durchgängen durch die Schleife der Reihe nach von links nach rechts zugewiesen. Im Gegensatz zu /L behandelt /Q doppelte Anführungszeichen mit eingebettetem Leerzeichen als einzelnes Argument.

 

/SFühren Sie die DO-Schleife im aktuellen Verzeichnis und dann in allen Unterverzeichnissen aus. (DO unterstützt aus Kompatibilitätsgründen mit FOR auch /R als Synonym.)

 

Wenn Sie nach dem /S eine Zahl angeben, beschränkt DO die Unterverzeichnisrekursion auf diese Zahl. Wenn Sie beispielsweise einen Verzeichnisbaum „\a\b\c\d\e“ haben, wirkt sich /S2 nur auf die Verzeichnisse „a“, „b“ und „c“ aus.

 

Wenn Sie a angeben + gefolgt von einer Zahl nach dem /S, wird DO nicht ausgeführt Befehl bis es diese Tiefe im Unterverzeichnisbaum erreicht. Zum Beispiel, wenn Sie einen Verzeichnisbaum haben \a\b\c\d\e, /S+2 wird nicht ausgeführt Befehl in \a or \a\b.

 

/T"Text"Geben Sie die Trennzeichen an, die beim Parsen eines Zeichenfolgensatzes verwendet werden sollen.

 

/YLesen Sie ein eindimensionales Array und weisen Sie jeden Wert der DO-Variablen zu. Zum Beispiel:

 

mache x in /Y MyArray

   Echo x = %x

beenden