Inhaltsverzeichnis:

Batch-Dateien: Einige Grundlagen .. - Gunook
Batch-Dateien: Einige Grundlagen .. - Gunook

Video: Batch-Dateien: Einige Grundlagen .. - Gunook

Video: Batch-Dateien: Einige Grundlagen .. - Gunook
Video: Windows Batch Dateien erstellen - Grundlagen und Beispiele 2024, November
Anonim
Batch-Dateien: Einige Grundlagen…
Batch-Dateien: Einige Grundlagen…

Dieses Instructable wird Ihnen einige Grundlagen des Schreibens von Batch-Dateien beibringen und Ihnen zeigen, wie Sie ein Zahlenrätselspiel mit ein paar Wendungen erstellen, nur um die Dinge interessant zu halten …

Ich habe die meisten meiner Kommandozeilen-Fähigkeiten und mein ganzes Batch-Schreiben im Allgemeinen aus dem Internet und insbesondere aus Instuctables gelernt. Ich möchte mich bei Instructables-Benutzer Neodudeman für seine großartigen Instructables zum Stapelschreiben bedanken. Vielen Dank!

Schritt 1: Was ist eine Batch-Datei?

Was ist eine Batch-Datei?
Was ist eine Batch-Datei?

Nun, die meisten meiner Leser wissen wahrscheinlich schon, was eine Batch-Datei ist, aber nur für den Fall….

Eine Batchdatei ist einfach eine Sammlung (Batch) von MSDOS-Befehlen, die nacheinander ausgeführt werden, wenn Sie die Batchdatei ausführen. Batch-Dateien beginnen als.txt-Dateien im Editor und werden ausführbare Dateien, wenn Sie sie als etwas mit der Erweiterung.bat speichern. Alles, was Sie also tun, ist, eine Datei in Notepad zu schreiben und sie dann beispielsweise als "instructable.bat" zu speichern. Sobald die.bat-Datei am Ende des Dateinamens platziert ist, erscheint eine schöne, neue Datei, benannt nach Ihrem Namen, mit einem hübschen Zahnradsymbol. Okay, jetzt, da wir wissen, was diese Batch-Dateien sind, können wir mit dem Schreiben beginnen!

Schritt 2: Grundbefehle

Grundbefehle
Grundbefehle
Grundbefehle
Grundbefehle
Grundbefehle
Grundbefehle
Grundbefehle
Grundbefehle

Alles klar, Sie müssen ein paar Befehle lernen. Öffnen Sie also zuerst die MSDOS-Eingabeaufforderung. Öffnen Sie das Startfenster, klicken Sie auf Ausführen, geben Sie "cmd.exe" ein und klicken Sie dann auf Ausführen. Okay. Zuerst schauen wir uns Variablen an. Variablen sind Zahlen, Wörter oder andere Dinge, die (etwas offensichtlich) variieren. Die Eingabeaufforderung hat eine variable Funktion. Einige Variablen sind bereits festgelegt, z. B. TIME, DATE und einige andere. Die meisten Variablen können Sie jedoch selbst festlegen. Klicken Sie auf das Eingabeaufforderungsfenster und geben Sie ein:SET variable=randomEs spielt wirklich keine Rolle, ob Sie "SET" groß schreiben oder nicht, aber ich schreibe alle meine Befehle gerne groß, besonders wenn ich Batch-Dateien schreibe. Es macht es nur einfacher zu sagen, was Sie tun. Drücken Sie jetzt die Eingabetaste. Schön für dich! Sie haben Ihre erste Variable eingestellt! Aber was können wir damit machen? Wen interessiert es, wenn wir nur die Variable richtig setzen können? Nun, wie sich herausstellt, können wir noch viel mehr tun, aber zuerst versuchen wir einfach, den Computer dazu zu bringen, uns mitzuteilen, wie die Variable eingestellt ist. Okay, um den Computer dazu zu bringen, den Wert einer Variablen zu lesen, geben wir den Namen der Variablen ein, in diesem Fall "Variable" und fügen den Namen in %-Markierungen ein, wie folgt: %variable%. Geben Sie das ein und drücken Sie die Eingabetaste:%variable%Seltsamer Fehler, oder? Der Computer sagte "'Variable' wird nicht als interner oder externer Befehl, lauffähiges Programm oder Batch-Datei erkannt." Warum hat es diesen Fehler gegeben? Nun, im Grunde gab es diesen Fehler, weil die Eingabeaufforderung den Wert dieser Variablen so behandelt, als ob Sie ihn selbst eingegeben hätten. Als Sie %variable% eintippten, dachte der Computer, Sie würden ihm sagen, dass er den Befehl "random" ausführen soll. Offensichtlich brauchen wir etwas anderes, um den Wert unserer Variablen zu sehen. Hier kommt der ECHO-Befehl ins Spiel. Der ECHO-Befehl weist die Eingabeaufforderung einfach an, zu wiederholen oder zu sagen, was auch immer Sie nach ECHO eingegeben haben. Wenn wir also den ECHO-Befehl vor unserer Variablen eingeben, sollten wir bekommen, was wir wollen: ECHO %variable%There! Jetzt haben wir, was wir wollen! Der Computer druckt "zufällig". Offensichtlich war dies der Wert, den wir für unsere Variable eingegeben haben, also ist es das Ergebnis, das wir wollten. Im nächsten Schritt erfahren wir mehr über Variablen und wie wir sie verwenden können.

Schritt 3: Verwenden des SET-Befehls und der Variablen

Verwenden des SET-Befehls und der Variablen
Verwenden des SET-Befehls und der Variablen
Verwenden des SET-Befehls und der Variablen
Verwenden des SET-Befehls und der Variablen

Nun, da wir wissen, was Variablen sind, was können wir sonst noch mit ihnen machen? Nun, wir können rechnen, wir können sie als Bedingungen zum Schreiben von Programmen und Batch-Dateien verwenden, wir können grundlegende Arithmetik ausführen, wir können Befehle ausführen und vieles mehr. Wir werden nicht auf alles eingehen, was Sie mit Variablen machen können, aber wir werden einige wichtige Aspekte der Variablenfunktion besprechen. Erstens erzeugt der SET-Befehl selbst nur String-Variablen. Dies bedeutet, dass es keine weiteren Berechnungen hinzufügt oder ausführt. Wenn Sie dem Computer sagen, dass er einer Variablen mit dem Wert 1 1 hinzufügen soll, erhalten Sie den Wert 1+1. Wenn wir möchten, dass die beiden Zahlen tatsächlich addiert werden, müssen wir ein "/a" nach dem SET-Befehl platzieren. Dazu geben wir Folgendes ein:SET /a varible=(Wert)Angenommen, wir möchten eine Variable in unsere Batch-Datei einfügen, die der Benutzer bereitstellt. Dies ist beispielsweise sinnvoll, wenn wir Werte nach einer Formel berechnen oder in unserem Fall möchten, dass der Benutzer eine Zahl errät, die der Computer ermittelt hat. Um eine benutzerdefinierte Variable zu generieren, fügen wir ein /p nach dem SET-Befehl hinzu und wir lassen den Bereich nach = leer:SET /p variable=Los geht's! Eine benutzerdefinierte Variable! Wenn wir diese Zeile in eine Batchdatei einfügen würden, würde der Batch laufen, bis er diese Zeile erreicht, und dann auf Benutzereingaben warten, bevor er fortfährt. Die andere coole Sache an /p ist, dass es /a vollständig negiert. Wenn wir ein /p einschließen, können wir das /a einfach weglassen. Als nächstes werden wir lernen, wie man Zufallsvariablen erzeugt. Wenn der Computer eine Zufallszahl für eine Variable auswählen soll, geben wir einfach den SET-Befehl gefolgt von der Variablen ein und setzen die Variable dann auf %RANDOM%. Auch hier muss es kein Kapital sein, aber ich mache es trotzdem gerne. Wir geben also ein:SET /a variable=%RANDOM%Offensichtlich ist dies keine benutzerdefinierte Variable, also fügen wir /a ein. Cool! Jetzt wissen wir also, wie man eine Zufallszahl erzeugt! Aber wie zufällig ist es? Nun, es stellt sich heraus, dass der Computer eine Zahl zwischen 0 und ungefähr 37 000 auswählt. Ich bin mir nicht sicher, wie die genaue Zahl lautet. Aber was ist, wenn wir eine kleinere Zahl wollen? Angenommen, wir wollen wie in diesem Instructable eine überschaubare Zahl für so etwas wie ein Ratespiel? Nun, hier kommt der IF-Befehl ins Spiel….

Schritt 4: Die Befehle IF und GOTO. Macht in den Händen des Batch Writers

Die IF- und GOTO-Befehle. Macht in den Händen des Batch Writers
Die IF- und GOTO-Befehle. Macht in den Händen des Batch Writers

Wir wollen also eine überschaubare Zahl produzieren. Nehmen wir an, wir wollen eine Zufallszahl zwischen 1 und 20 erzeugen. Okay, das ist leicht zu sagen, aber der RANDOM-Wert wählt eine Zahl zwischen 1 und 37.000. Dafür verwenden wir IF. Der IF-Befehl sagt im Grunde, WENN etwas passiert oder WENN etwas einem bestimmten Wert entspricht oder nicht gleich ist, DANN mach DIES. Also setzt IF bedingte Befehle. Wir möchten eine Zahl erzeugen, die kleiner als zwanzig, aber größer als eins ist, natürlich beginnen wir damit, dem Computer zu sagen, dass er eine Zufallszahl auswählen soll, aber dann müssen wir ihm sagen können, dass er eine neue auswählen soll Nummer, wenn die gewählte Nummer nicht unseren Anforderungen entspricht. Hier kommt der GOTO-Befehl ins Spiel. GOTO weist den Computer einfach an, zu einem bestimmten Label im Code zu GEHEN. Labels sehen so aus::pickJedes Wort nach einem Doppelpunkt wird zu einem Label, auf das wir mit dem GOTO-Befehl zugreifen können. Wenn wir also zu dem Codeabschnitt mit dem Label "pick" darüber gehen möchten, geben wir einfach ein: GOTO pickAlright, also fahren wir mit unserer Codierung fort. Wir haben dem Computer bereits gesagt, dass er eine Zufallszahl auswählen soll, also haben wir Folgendes eingegeben:SET /a answer=%RANDOM%Nun möchten wir diese Zahl auf einen kleineren Bereich herunterziehen. Also rufen wir den IF-Befehl auf. Etwas in der Art sollte den Trick machen:IF %answer% GTR 20 GOTO pickDies weist den Computer an, GOTO auszuwählen, WENN die Antwort GReaTer als 20 ist. Kleiner alsGTR – Größer alsLEQ – Kleiner als oder gleich GEQ – Größer als oder gleich Somit können wir unsere Batch-Datei mit IF, GOTO, Labels und diesen Abkürzungen beliebig manipulieren. Okay, wir haben unsere Zufallszahl jetzt unter zwanzig, und das haben wir bisher::pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO pickNow, stellen wir sicher, dass der Computer t wähle 0 für die Antwort.:pickSET /a answer=%RANDOM%IF %answer% GTR 20 GOTO pickIF $answer% EQU 0 GOTO pickOkay! Jetzt haben wir eine brauchbare Zahl zwischen 1 und 20. Kommen wir zum Fleisch des Stapels.

Schritt 5: Das Fleisch unseres Spiels

Das Fleisch unseres Spiels
Das Fleisch unseres Spiels

Alles klar, wir haben unsere Zufallszahl. Wir wollen auch zählen, wie viele Schätzungen unser Spieler macht, also setzen wir eine weitere Variable:SET /a mutnum=0Das setzt die Variable geussnum auf null, und wir haben ihr den /a-Parameter gegeben, damit wir hinzufügen können dazu jedes Mal, wenn der Benutzer errät. Okay. Wir haben eine Zufallszahl und wir haben die Anzahl der Vermutungen festgelegt. Jetzt brauchen wir einige Anweisungen, und wir brauchen einige Benutzereingaben für die Schätzzahl. Sie sollten das meiste davon inzwischen verstanden haben, also zeige ich Ihnen nur den Code::beginECHO Ich überlege mir eine ZahlECHO Ich denke….. SET /a GuessNum=0(This ECHOs diese beiden Zeilen und setzt die Anzahl der Vermutungen auf 0:pickASET /a Answer=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Ich denke an eine Zahl zwischen 1 und 20ECHO Rate an welche Zahl ich denke of.(Dieser Abschnitt wiederholt sich, bis er unsere Zufallszahl setzt, und dann ECHOs die Anweisungen für unseren Spieler):RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO My Number is Higher. IF %Guess% GTR %Answer% ECHO My Number is Lower. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO Retry(Dieser Abschnitt weist den Computer an, nach Benutzereingaben zu fragen, und wird dann kontinuierlich wiederholt, bis der Benutzer die Dann geht es zum Etikett ENDE:ENDECHO Sie haben Recht! Die Antwort war %Answer%ECHO Es dauerte %GuessNum% Guesses. ECHO. PAUSECLSECHO Möchten Sie wieder spielen?ECHO J/N?SET /p play=IF %play% EQU y GOTO beginIF %play% EQU n GOTO closeIF % play% GTR y GOTO playagainIF %play% LSS y GOTO playagainIF %play% GTR n GOTO playagainIF %play% LSS n GOTO playagain(Hier ist unser Endabschnitt. Dies sagt dem Benutzer, wie viele Vermutungen er gemacht hat, und fragt dann, ob er möchte Beachten Sie, dass wir EQU, GTR und LSS auch mit Buchstaben verwenden können.)Okay! Wenn Sie diesen Code einfach kopieren, haben Sie ein legitimes Ratespiel. Nicht wirklich schick, aber hey, es ist besser, als die meisten Leute tun können. Aber wir werden eine kleine Wendung hinzufügen, nur um die Dinge interessant zu machen….

Schritt 6: Die Drehung

Die Drehung
Die Drehung
Die Drehung
Die Drehung
Die Drehung
Die Drehung

Wir haben zwar gerade ein funktionierendes Spiel, aber wir wollen es ein bisschen interessanter machen. Wie wäre es mit einem Anreiz für unseren Spieler, die richtige Zahl zu erraten? Wie wäre es, wenn wir so etwas machen wie.. ihren Computer herunterfahren, wenn sie die Zahl nicht erraten? Das wäre ziemlich cool! Okay, jetzt fügen wir einen kleinen Code hinzu, um diese Änderungen vorzunehmen. Zuerst fügen wir dem Codeabschnitt, den wir mit "retry" bezeichnet haben, eine Zeile hinzu. Also gehen Sie zu diesem Abschnitt. Es sieht so aus::RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Meine Nummer ist höher. IF %Guess% GTR %Answer% ECHO Meine Nummer ist niedriger. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO WiederholenOkay, wir fügen diese Zeile direkt nach dem "ECHO" ein. (Wenn wir nach ECHO einen Punkt setzen, bleibt eine Leerzeile.) Hier ist der neue Code:IF %GuessNum% EQU 4 GOTO shutdownGWWenn wir diese Zeile hinzufügen, sieht der Abschnitt so aus::RetrySET /p Guess=IF %Guess% LSS %Answer% ECHO Meine Nummer ist höher. IF %Guess% GTR %Answer% ECHO Meine Nummer ist niedriger. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO Retry Inzwischen sollte es ziemlich offensichtlich sein, was dies bewirkt. Es teilt dem Computer mit, dass, wenn GuessNum gleich 4 ist, er zu dem Codeabschnitt mit der Bezeichnung "shutdownG" gehen sollte. Was soll dieser Abschnitt zum Herunterfahren sagen? Nun, offensichtlich muss es als "shutdownG" bezeichnet werden. Als nächstes muss der Computer heruntergefahren werden. Der Befehl zum Herunterfahren ist "SHUTDOWN -s". Dadurch wird der Computer heruntergefahren, aber wir möchten dem Befehl einige hinzufügen. Wir fügen ein "-f" hinzu. Dadurch wird das Schließen aller Programme erzwungen, und wir fügen ein "-t 60" hinzu. Dadurch wird der Computer angewiesen, ein Fenster anzuzeigen und sechzig Sekunden zu warten, um es zu schließen. Wir werden auch "-c "Nachricht hier" hinzufügen. was eine Meldung im Shutdown-Fenster anzeigt. Nach unserem Shutdown-Befehl heften wir den gleichen Code an, den wir oben haben, den Code, der es unserem Spieler ermöglicht, Zahlen auszuwählen und ihm Feedback zu geben. Unser Shutdown-Code sieht jetzt also so aus::shutdownGSHUTDOWN -s -f -t 60 -c "Raten Sie weiter! Wenn Sie die richtige Zahl nicht erraten, wird der Computer heruntergefahren!":shutdownG1SET /p Guess=IF %Guess% LSS %Answer% ECHO Meine Nummer ist höher. IF %Guess% GTR %Answer % ECHO Meine Nummer ist niedriger. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO shutdownG1Nun haben wir den Computer auf SHUTDOWN eingestellt und zeigen eine Meldung an, aber wir müssen auch den Computer, um das Herunterfahren zu stoppen, falls es eingeleitet wurde. Also fügen wir das dem Abschnitt der Codierung mit der Bezeichnung "Ende" hinzu. Dieser Abschnitt sieht wie folgt aus::ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Sie haben Recht! Die Antwort war %Answer%ECHO Es dauerte %GuessNum% Guesses. ECHO. PAUSECLSECHO Möchten Sie wieder spielen?ECHO J/N?SET /p play=IF %play% EQU y GOTO beginIF %play% EQU n GOTO closeIF % play% GTR y GOTO playagainIF %play% LSS y GOTO playagainIF %play% GTR n GOTO playagainIF %play% LSS n GOTO playagainWir wollen das Herunterfahren stoppen, und das tun wir mit dem Befehl "SHUTDOWN -a". Also fügen wir eine Zeile hinzu, die wie folgt aussieht:IF %GuessNum% GTR 4 SHUTDOWN -aWir fügen diesen Befehl direkt nach dem Label hinzu und sagen dem Computer, dass er den SHUTDOWN ausführen soll -ein Befehl nur, wenn der Spieler dies getan hat machte mehr als vier Vermutungen und startete einen Shutdown. Okay! Sie sollten Ihr Spiel jetzt fertig haben! WIR stellen sicher, dass es im nächsten Schritt keine Fehler gibt.

Schritt 7: Letzte Schritte

Letzte Schritte
Letzte Schritte

Okay, wenn Sie jetzt all diese Codierung aneinanderreihen, dann haben Sie etwas, das ungefähr so aussieht::beginECHO Ich denke an eine ZahlECHO Ich denke….. SET /a GuessNum=0:pickASET / a Answer=%RANDOM%IF %Answer% GTR 20 GOTO pickAIF %Answer% EQU 0 GOTO pickAECHO Ich denke an eine Zahl zwischen 1 und 20ECHO Rate, an welche Zahl ich denke.:RetrySET /p Guess=IF %Guess % LSS %Answer% ECHO Meine Nummer ist höher. IF %Guess% GTR %Answer% ECHO Meine Nummer ist niedriger. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1IF %GuessNum% EQU 4 GOTO shutdownGGOTO Retry:ENDIF %GuessNum% GTR 4 SHUTDOWN -aECHO Sie haben Recht! Die Antwort war %Answer%ECHO Es dauerte %GuessNum% Guesses. ECHO. PAUSECLSECHO Möchten Sie wieder spielen?ECHO J/N?SET /p play=IF %play% EQU y GOTO beginIF %play% EQU n GOTO closeIF % play% GTR y GOTO playagainIF %play% LSS y GOTO playagainIF %play% GTR n GOTO playagainIF %play% LSS n GOTO playagain:closeECHO Danke fürs Spielen!PAUSEEXIT cmd:shutdownGSHUTDOWN -s -f -t 60 -c "Weiterraten ! Wenn Sie die richtige Zahl nicht erraten, wird der Computer heruntergefahren!":shutdownG1SET /p Guess=IF %Guess% LSS %Answer% ECHO Meine Nummer ist höher. IF %Guess% GTR %Answer% ECHO Meine Nummer ist Lower. IF %Guess%==%Answer% GOTO ENDECHO. SET /a GuessNum=%GuessNum%+1GOTO shutdownG1Das sollte alles sein, was wir brauchen, oder? Also, mach weiter und speichere die Notepad-.txt-Datei, die du hast, als GuessGame.bat. Eigentlich können Sie es benennen, was Sie wollen, solange Sie die.bat am Ende einfügen. Okay, klicken Sie auf das Symbol und führen Sie das Programm aus! Hat es funktioniert? Nun gut. Es macht ein paar seltsame Dinge, nicht wahr? Es stellt sich heraus, dass, wenn wir einen Batch wie diesen schreiben, die Eingabeaufforderung jeden Befehl, den wir geben, mit ECHO bewertet, genau so, als ob wir sie in die Eingabeaufforderung eingegeben hätten. Das Spiel funktioniert also, aber es ist ein bisschen chaotisch und unklar. Können wir etwas dagegen tun? Ja! Alles, was wir tun müssen, ist diese Zeile ganz am Anfang unseres Codes einzugeben:@ECHO OFFDies weist den Computer an, ECHO auszuschalten. Und das @-Zeichen beim Betteln sagt ihm, dass er das ECHO für jeden Befehl ausschalten soll. Wenn wir das @ weglassen, würde es das ECHO nur für einen Befehl ausschalten.

Schritt 8: Fertig

Herzliche Glückwünsche! Sie haben gerade ein Batch-Datei-Spiel geschrieben. Ziemlich einfach, nicht wahr? Wenn Sie damit umgehen können, können Sie herausfinden, wie Sie mit Batch-Dateien einiges anfangen können. Spielen Sie einfach damit, machen Sie ein paar Experimente. Nur für den Fall, dass Sie etwas nicht zum Laufen bringen können oder ich bei all der Codierung etwas ausgelassen habe, gebe ich Ihnen die Datei hier.

Empfohlen: