Unterbrochene Schleife

1

Wie würde ich eine Batch-Datei mit einer unterbrochenen Schleife erstellen? Am Momen habe ich eine Datei mit einer Art Matrix-y-Gefühl, das dies tut ...

:start

echo %random%%random%%random%%random%

goto start

aber ich möchte es auch so machen, dass es auf dem bildschirm erscheint clrund dann eine menge ausrufezeichen anzeigt, ähnlich wie bei einem fehlertyp wie zb

:start

echo !!!!!!!!!!...etc

goto start

aber wie würde ich so eine unterbrochene schleife machen?

..wenn Sie bedenken, dass ich ein bisschen zu neu bin, wäre ich dankbar für eine etwas speziellere Behandlung im Erklärungsbereich jeder Zeile. Vielen Dank :)..

Xaxis
quelle
Was ist es, das die Schleife unterbricht, woher weiß es, wann es aufhören soll zu Echo? Ich nehme an, Sie möchten eine Schleife, die so lange läuft, bis eine Bedingung erfüllt ist, richtig? Bitte erkläre es mir, damit ich es mir besser vorstellen kann.
Pimp Juice IT

Antworten:

2

Ihre Frage ist etwas unklar, aber ich gehe davon aus, dass das Programm den Fehler zu zufälligen Zeiten anzeigen soll. Hierfür können Sie einen Zufallsgenerator verwenden.

set /a rndm=%random% * 10 / 32768 + 1

Dieser Code erstellt eine Variable mit dem Namen "rndm" (dies muss nicht "rndm" heißen, Sie können sie beliebig benennen). Dies ist eine Zufallszahl zwischen 1 und 10. Wenn Sie einen größeren oder kleineren Pool von möglichen Werten wünschen Zahlen können Sie die 10 im Code nach Belieben ändern. Wenn Sie also eine Zufallszahl zwischen 1 und 3 möchten, tun Sie Folgendes:

set /a rndm=%random% * 3 /32768 + 1

Sie können dies verwenden, um eine zufällige Wahrscheinlichkeit für das Auftreten des Fehlers zu generieren. Wenn Sie eine 1: 10-Chance haben möchten, die Schleife zu verlassen, den Bildschirm zu löschen und eine andere Schleife einzugeben, sollte Ihr Code folgendermaßen aussehen:

@echo off :start echo %random%%random%%random%%random% set /a rndm=%random% * 10 / 32768 + 1 if %rndm% == 1 goto errorstart goto start :errorstart cls :error echo !!!!!!!!!!!! goto error

Während die Schleife ausgeführt wird, generiert das Programm eine Zufallszahl zwischen 1 und 10. Unmittelbar danach prüft es, ob die erzeugte Zahl 1 ist. Wenn sie nicht 1 ist, setzt es die Schleife fort. Wenn dies der Fall ist, wird zum Label "errorstart" gesprungen. Der Befehl unter der Bezeichnung errorstart löscht den Bildschirm. Das Programm tritt dann in die Fehlerschleife ein, in der Ausrufezeichen ausgegeben werden, bis das Programm geschlossen wird.

Mit diesem Code sollten Sie den gewünschten Effekt erzielen, aber 1 zu 10 ist eine etwas zu hohe Wahrscheinlichkeit für ein Programm, das so schnell arbeitet. Sie können dies also in 1 zu 1000 oder 1 zu 10.000 ändern. Dadurch sollte die Anfangsschleife länger dauern, bevor die Sekundärschleife einsetzt.

ICan'tDecideOnAName
quelle
Sind Sie sicher, dass dies funktionieren wird? Sie sollten Klammern im Ausdruck haben, z SET /a _rand=(%RANDOM%*10/32768)+1. Siehe ss64.com/nt/syntax-random.html
DavidPostill
Genial, genau das, was ich wollte, aber wozu dient der 32768 + 1-Server und wozu dient er?
Xaxis
Ja, dieses Programm funktioniert nicht richtig, vor allem, weil id es so mag, dass es zu den Zahlen zurückkehrt und etwa jede Sekunde ununterbrochen blinkt.
Xaxis
@Xaxis Entschuldigen Sie die späte Antwort, aber wenn Sie möchten, dass das Programm zur ersten Schleife zurückkehrt, können Sie etwas Ähnliches wie den Code implementieren, der die erste Schleife in die zweite Schleife verlässt. Meistens wird nur kopiert und ein paar Sprungfahnen ausgetauscht.
ICan'tDecideOnAName