Inhaltsverzeichnis:
- Schritt 1: START-Befehl
- Schritt 2: SET-Befehl - String-Theorie (1/4)
- Schritt 3: SET-Befehl - Mr.Math (2/4)
- Schritt 4: SET-Befehl - Benutzereingabe (3/4)
- Schritt 5: SET-Befehl - Mehr als das Auge trifft (4/4)
- Schritt 6: IF-Befehl - Jeder ist gleich (1/2)
- Schritt 7: IF-Befehl - Aber ich bin größer als du (2/2)
- Schritt 8: GOTO-Befehl
- Schritt 9: > Parameter (1/2)
- Schritt 10: >> Parameter (2/2)
- Schritt 11: Beispielimplementierung
- Schritt 12: Fazit: Abschließende Hinweise
Video: Erweiterter Stapel: 12 Schritte
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:22
aber das ist in Ordnung, verwenden Sie einfach den Befehl CD oder CHDIR, um das Verzeichnis zu wechseln. Aber das ist in diesem Fall egal.", "top":0.08480565371024736, "left":0.014285714285714285, "height":0.8586572438162544, "width":0.9357142857142857}]">
BITTE DIREKTIEREN SIE ALLE FRAGEN, DIE SIE MÖGLICHERWEISE AN MEINEN BLOG HABEN: https://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/Ich besuche keine Lehrmaterialien mehr, und Sie werden schneller Antwort auf diese Weise. Hey Leute! Tam Nguyen hier. Es hat lange gedauert, aber jetzt ist es da! Ich präsentiere Ihnen die nächste Folge meiner Batch-Tutorials! Sie haben möglicherweise (oder auch nicht) meine anderen instructables gelesen: Grundlagen von BatchSlightly Advanced BatchThis Instructable borgt einige Elemente aus den ersten beiden Instructables. Nämlich:ECHO CommandCD CommandDIR CommandWenn Sie die anderen beiden nicht gelesen haben, schlage ich vor, sich diese Befehle schnell anzusehen. Ich werde hier warten. Ok! Am Ende dieses Instructable werden Sie vertraut mit: START CommandSET CommandIF CommandGOTO Commandand> und >> ParametersMit diesen Befehlen können Sie dynamische Batch-Dateien erstellen, die sich je nach Benutzereingabe ändern können, und erstellen und erweitern. Also lasst uns diese gute 'ol Eingabeaufforderung öffnen und loslegen! Ausführen -> cmdAlternativ können Sie gehen zu: Start->Programme->Zubehör->EingabeaufforderungMeine Erklärungen in diesem anweisbaren wurden ein wenig lang, daher habe ich einige Befehle hauptsächlich aus ästhetischen Gründen auf mehr als eine Seite aufgeteilt; Ich mochte es, die Bilder beim Lesen des Textes zu sehen, ohne nach oben und unten scrollen zu müssen. Normalerweise gibt es nach jedem Code Snippet ein Bild. Viel Spaß!
Schritt 1: START-Befehl
Der START-Befehl ist ein netter kleiner Befehl, der Dinge startet! Es ist ein einfacher Befehl und wird uns beim Aufwärmen helfen, bevor wir zu den schwierigeren Befehlen kommen. Die Parameter des Befehls sind genau das, was Sie denken.
Starten Sie ThingToBeStarted.exeZiemlich einfach
START WMPlayer.exeSie können nicht nur.exe-Dateien starten, sondern auch eine Website eingeben, die in Ihrem Standardbrowser geöffnet wird
START www. Instructables.comZiemlich einfach, oder? Okay. Kommen wir nun zum wahren Fleisch des Instructable: SET Command.
Schritt 2: SET-Befehl - String-Theorie (1/4)
Der SET-Befehl: Die Variable Definer. Ah. Variablen. Ambrosia des Entwicklers. Variablen sind Speicherbits, die … äh, variabel sind. Keine IFs ANDs oder NOTs darüber! (lol sorry). Okay! Wie funktioniert dieses Baby? Ganz einfach, die Parameter des SET-Befehls sind:SET Variablenname=VariablenwertSET selbst erstellt String-Variablen.
SET TestVS=Variablenstring testen!In diesem Fall haben wir nur den Wert "Test Variable String!" in die Variable TestVS. Nun, das ist alles Spaß und Spiel, aber wie erhalten wir den Variablenwert? Wir verwenden %. Fügen Sie einfach % um den Variablennamen hinzu
ECHO %TestVS%Ok cool, aber was kann es noch tun?
Schritt 3: SET-Befehl - Mr. Math (2/4)
Kann es Mathe? Nun, lassen Sie uns eine einfache Charge erstellen, um es zu testen.
@ECHO OFFSET Test=1ECHO %Test%SET Test=%Test%-1ECHO %Test%PAUSEÄh, was ist passiert? Das hätte funktionieren sollen! Warten Sie eine Minute … was war das mit SET-Befehlen, die nur Strings erzeugen? Ja. Der SET-Befehl selbst erstellt nur eine String-Variable, dh er erstellt die wörtlichste Interpretation des Werts. Es denkt nicht an "1 - 1" gleich "0", sondern an "1 - 1" gleich "1 - 1". Wie ändern wir das? Wir möchten, dass die Variable nicht direkt kopiert, sondern ausgewertet wird. Das heißt, wir wollen es von einem String in einen Ausdruck umwandeln! Eine sehr einfache Änderung, fügen Sie einfach ein /a zum SET-Befehl hinzu. Hier ist eine einfache Batch-Datei, um sie in Aktion zu sehen, oder Sie können sie einfach in das Handbuch zur Eingabeaufforderung eingeben. Ich schlage letzteres vor; es ist viel schneller und der Code ist nicht zu kompliziert, aber wenn Sie wirklich die Batch-Datei wollen, hier ist sie
@ECHO OFFSET /a Test=2+2ECHO %Test%PAUSEFantastisch! Es drückte es perfekt aus. Jetzt wissen wir, welche Änderungen an unserer "math test.bat" vorgenommen werden müssen
@ECHO OFFSET /a Test=1ECHO %Test%SET /a Test=%Test%-1ECHO %Test%PAUSEOkay. Also lass es uns laufen lassen!Großartig! Es hat perfekt funktioniert! Aber was als nächstes?
Schritt 4: SET-Befehl - Benutzereingabe (3/4)
Das SET hat auch die Fähigkeit, den Benutzer zur Eingabe aufzufordern. Durch Hinzufügen von /p zu den SET-Parametern wandelt es es von einem normalen Variablensetzer in einen benutzergesteuerten Variablensetzer um.
SET /p UDefine=Mit /p pausiert das Programm tatsächlich und wartet auf die Eingabe des Benutzers. Aber warte, ich sehe keinen /a-Parameter, bedeutet das, dass die Variable nur ein String ist? Nun, irgendwie. Das /p der Parameter negiert das /a vollständig, und wenn Sie es versuchen, erhalten Sie einfach einen Fehlenden Operandenfehler. Dies bedeutet, dass die benutzerdefinierte Variable keine Ausdrücke auswerten kann. Was kann man also tun? Nun, hier ist ein kniffliger Trick, den ich mir ausgedacht habe und den wir verwenden können. Der SET-Befehl ermöglicht nicht die gleichzeitige Verwendung der Parameter /p und /a, richtig? Nun, was ist mit der sequentiellen Verwendung der Parameter /a und /p? Ahhh… du schlaue Stiefel
@ECHO OFFECHO Rechner Version 1.0ECHO. SET /p UDefine=SET /a UDefine=%UDfine%ECHO =ECHO %UDfine%ECHO. PAUSESchönen Rechner hast du da. Wenn Sie es bis jetzt noch nicht herausgefunden haben, ist das {{{ECHO.}}} eine leere Zeile. Ist das nicht cool-cool?
Schritt 5: SET-Befehl - Mehr als das Auge trifft (4/4)
An dieser Stelle mag es scheinen, dass die Variablen des SET-Befehls nur für Strings und Ausdrücke geeignet sind. Nicht wahr. Die Variablen sind in der Tat sehr, sehr flexibel und nicht nur auf ECHOs beschränkt. Haben Sie schon einmal versucht, eine Variable allein einzugeben?
SET-Test = Instructables%Test%Was für ein seltsamer Fehler … es heißt, dass der Befehl "Instructables" nicht erkannt wird, nicht dass %Test% keine Syntax hätte. Das bedeutet, dass DOS jede Variable so behandelt, als wäre sie von Hand eingegeben worden. Nun, was wäre wenn
SET Test=START cmd.exe%Test%Fantastisch! Es hat funktioniert!DOS behandelt jede Variable, als ob sie vom Benutzer eingegeben wurde, und führt sie entsprechend aus. Hier ist ein interessanter Code: (Einfach kopieren/einfügen; es ist ein bisschen mühsam.
@ECHO OffSET Variable1=ECSET Variable2=HSET Variable3=O CSET Variable4=ooSET Variable5=l!ECHO %Variable1%%Variable2%%Variable3%%Variable4%%Variable5%ECHO.%Variable1%%Variable2%%Variable3%%Variable4% %Variable5%PauseIst das nicht ordentlich? Jede Variable enthält zwei Buchstaben der gesamten Nachricht (außer Variable2), und wenn man die Variablen in die richtige Reihenfolge bringt, addiert sich jeder Buchstabe und beendet den gesamten Befehl von ECHO Cool!Der SET-Befehl ist einer der komplizierteren und leistungsfähigsten Befehle der DOS-Wörterbuch.
Schritt 6: IF-Befehl - Jeder ist gleich (1/2)
Dieser klassische bedingte Operand. Einfach, aber dennoch leistungsstark. Für diejenigen, die noch nie zuvor programmiert haben, ist der IF-Befehl genau so, wie er klingt. Wenn sich ein Ausdruck in der Syntax als wahr (oder NICHT wahr) erweist, wird die nächste Befehlsfolge ausgeführt. Die grundlegende Befehlszeile sieht so aus:
IF %variable1%==%variable2% ECHO Dieser Teil wird ausgeführtoder wenn Sie mehr als eine Syntax haben
@ECHO OFFIF %variable1%==%variable2% (ECHO Dieser Teil wird ausgeführt. ECHO Das ist auch.) ELSE (ECHO Wenn Variable1 &apost = Variable 2 tut, passiert dies. ECHO und das passiert auch.)Hinweis: Die besondere Platzierung von Klammern liegt nicht daran, dass ich nicht an organisierten Code glaube, sondern daran, dass das gesamte IF-Snippet nicht funktioniert, wenn sie nicht an diesen Stellen vorhanden sind. Wenn also in Ihrem IF-Code ein Fehler auftritt, liegt dies höchstwahrscheinlich an der Klammer. Um diesen bestimmten Stapel auszuführen, habe ich tatsächlich die Eingabeaufforderung selbst verwendet, damit ich die Variablen festlegen konnte, ohne das Mehrfache IfVariableTest.bat bearbeiten zu müssen mal.
Schritt 7: IF-Befehl - Aber ich bin größer als du (2/2)
Okay, Sie haben also eine schöne IF-Anweisung und alles, und zu überprüfen, ob Variablen gleich sind oder nicht, ist schön und alles, aber es passt nicht ganz in die Rechnung. Ich möchte, dass etwas passiert, wenn variable1 kleiner als die andere Variable ist! Für uns Programmierer scheint dies eine einfache Aufgabe zu sein. Tun Sie einfach, was alle anderen Programmiersprachen tun! Halten Sie Ihre Pferde Cowboy. Nicht so schnell. Eine Batch-Datei ist nicht nur Ihre normale Programmiersprache. So albern es auch erscheinen mag, das "" funktioniert nicht mit Batch-Dateien.
EQU - Gleich - ==NEQ - Nicht gleichLSS - Kleiner alsGTR - Größer alsLEQ - Kleiner als oder gleich GEQ - Größer als oder gleichSetzen Sie diese Operanden einfach an die Stelle des ==Beispiels
IF 32 GTR 3 ECHO Das wird funktionieren
@ECHO OFFIF 32 GEQ 32 (ECHO 32 ist größer als oder gleich 32) ELSE (ECHO 32 ist definitiv gleich 32)PAUSEIF 32 LSS 32 (ECHO 32 ist kleiner als 32? Ich glaube nicht.) ELSE (ECHO 32 ist.) Nicht weniger als 32. Ende der Geschichte.)PAUSE
Schritt 8: GOTO-Befehl
Der GOTO-Befehl. Es tut genau das, was es sagt; es GEHT ZU einem Etikett im Batchdatei-Skript. Um diesen Befehl zu verwenden, müssen Sie zuerst ein Etikett haben. Etiketten sehen so aus:
:Label1Es ist einfach ein Doppelpunkt vor einer Reihe von Buchstaben und/oder Zahlen ohne Leerzeichen. Der GOTO-Befehl ist wie folgt aufgebaut
GOTO Label1So einfach ist das! Wenn ich darüber nachdenke, bin ich mir nicht wirklich sicher, warum ich das nicht in den Slightly Advanced Batch eingefügt habe. Auf jeden Fall kann dieser Befehl verwendet werden, um eine Batch-Datei zu wiederholen, indem einfach GOTO ein Label, das den GOTO-Befehl erneut ausführt
@ECHO OFF:RepeatMeECHO Dies wird wiederholt, es sei denn, Sie drücken "STRG-C"GOTO RepeatMeDie Batchdatei sagt übrigens die Wahrheit. STRG-C ist die universelle Pause und Aufforderung zum Beenden. STRG-S ist einfach Pause. Aber das Schließen des Fensters funktioniert genauso gut. Das GOTO kann Ihren Code auch überspringen oder neu anordnen
GOTO TurnEOffGOTO MultipleGotoECHO Dieses ECHO wird übersprungen.:MultipleGotoGOTO 3:ENDPAUSEEXIT:1ECHO Das EndGOTO END:3ECHO Dies wird zuerst angezeigtGOTO 2:TurnEOff@ECHO OFFGOTO MultipleGoto:2ECHO Dies ist das zweite, obwohl es im Code als letztes erscheint. GOTO 1Der obige Code wurde absichtlich verwirrend strukturiert, um die Fähigkeit von GOTO hervorzuheben, im Code herumzuspringen.
Schritt 9: > Parameter (1/2)
Befehl>DateinameOkay, nehmen wir an, wir befinden uns in einem bestimmten Verzeichnis. Wir verwenden dann den DIR-Befehl, der, wenn Sie die Grundlagen von Batch lesen, den Inhalt Ihres aktuellen Verzeichnisses anzeigt
C:\Benutzer\Neo\>DIRWürde normalerweise ausgeben
Volume in Laufwerk C ist HP Volume Seriennummer ist BC7E-E26C Verzeichnis von C:\Users\Neo2007-30-06 11:14 AM.2007-30-06 11:14 AM..2007-17-03 18:41 PM.idlerc 19.02.2007 15:14 Kontakte 19.06.2007 22:44 Desktop 29.06.2007 08:47 Dokumente 19.06.2007 10:35 Downloads 19.02.2007 15:14 Favoriten 19.02. 2007 15:14 Links12.05.2007 16:01 Musik30.06.2007 01:20 Bilder07.04.2007 15:08 Gespeicherte Spiele 19.02.2007 15:14 Suchen01.03.2007 07:23 PM 242, 947 Test Record.wma 19.06.2007 10:39 Videos 18.06.2007 09:57 1, 324, 574 wp_screenprint_mc.pdf 18.06.2007 09:59 73, 996, 533 wp_tshirt_full.mp4 4 Datei(en) 75, 564, 054 Bytes 14 Verzeichnis(se) 132, 927, 537, 152 Bytes freiAber wenn wir das > und hinzufügen
C:\Benutzer\Neo\DIR>DIRContents.txtWir erhalten keine Ausgabe, sondern stattdessen eine brandneue Textdatei namens DIRContents.txt, die die Ausgabe enthält! Coolness!Aber warte, es gibt ein Problem! Ich möchte mehrere Ausgaben in derselben Datei haben, aber mein > überschreibt sie einfach und fügt sie nicht hinzu! Was mache ich?
Schritt 10: >> Parameter (2/2)
DIR>>DIRContents.txtSauber! Hat perfekt funktioniert! Also warte. Bedeutet das, dass ich alles, was ich will, in eine Textdatei schreiben kann? ich möchte es probieren
Stapel ist fantastisch>Awesome.txtWas? Warum hat das nicht funktioniert? Dies liegt daran, dass der Parameter nur die Ausgabe von legitimen Befehlen schreibt, nicht nur alles, was Sie eingeben. Dies ist jedoch ein Problem, das einfach gelöst wird. Denken Sie daran, dass die Parameter die Ausgabe von Befehlen aufzeichnen. Welcher Befehl hat eine Ausgabe, die wir steuern können? Richtig! Das ECHO-Kommando
ECHO Batch ist fantastisch>Awesome.txtECHO Ich bin so froh, dass ich es kenne.>>Awesome.txtYay! Erinnern. Das >> fügt die Ausgabe in die nächste Zeile der Datei ein.
Schritt 11: Beispielimplementierung
Okay. Also lass uns alles zusammenstellen! Hier sind einige Beispielcodes, die ich gemacht habe, die die Befehle verwenden, die ich Ihnen in diesem instructable gezeigt habe. Dieser Code fügt einer Variablen kontinuierlich 1 hinzu und gibt das Ergebnis auf unbestimmte Zeit aus.
@ECHO OFFSET /a num=1:WiederholenECHO %num%SET /a num=%num%+1GOTO WiederholenDieser Code wird CMD.exe 5-mal starten
@ECHO OFFSET /a RepeatNum=5:OpenIF %RepeatNum%==0 GOTO EndSTART CMD.exeSET /a RepeatNum=%RepeatNum%-1GOTO Open:EndDieser Code erstellt eine Batch-Datei in C:\Users\Neo und führt sie aus
@ECHO OFFCHDIR C:\Users\NeoECHO @ECHO OFF>Hello.batECHO ECHO Hallo!>>Hello.batECHO ECHO Ich&aposm in Ihrem C-Laufwerk!>>Hello.batECHO PAUSE>>Hello.batC:\Users\Neo\Hello. batPauseDies ist ein kleiner Spielstapel. Du musst die Zahl erraten
@ECHO OFFSET /a GuessNum=0SET /a Answer=%RANDOM%ECHO 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%+1GOTO Wiederholen:ENDECHO Sie haben Recht! Die Antwort war %Answer%ECHO Es dauerte %GuessNum% Guesses. ECHO. PAUSEUnd dieser gefällt mir sehr gut. Wenn Sie jedoch nicht aufpassen, kann es je nach Leistungsfähigkeit Ihres Computers ziemlich schnell außer Kontrolle geraten. Diese Datei erstellt auf unbestimmte Zeit nummerierte Textdateien in einem Verzeichnis namens lolnumbers. Jede dieser Textdateien enthält das DIR des lolnumbers-Verzeichnisses. Die Sache ist, dass das Verzeichnis mit Textdateien immer voller wird, sodass jede aufeinanderfolgende Textdatei größer ist als die letzte. Das Ergebnis ist ein Ordner, dessen Gesamtgröße jede Sekunde größer und größer wird
@ECHO OFFSET /a num=1MKDIR lolnumbersCD lolnumbers:RestartDIR>%num%.txtSET /a num+=1GOTO RestartDas sind ziemlich einfache Codes. Experimentieren Sie mit ihnen nach Herzenslust.
Schritt 12: Fazit: Abschließende Hinweise
Puh. Wir haben eine Menge in diesem instructable abgedeckt. Dieser ist in der Tat dreimal länger als mein letzter. Ich hoffe, es wird Ihnen gefallen! Nur ein paar Erinnerungen, bevor ich gehe. Denken Sie daran: Wenn Sie eine Variable setzen, setzen Sie niemals ein Leerzeichen zwischen der Variablen und ihrem Wert. JA:
SET variable1=WertDas zusätzliche Leerzeichen führt dazu, dass Ihre Variable leer ist. NEIN
SET-Variable1 = WertAuch die mehreren IFs. Denken Sie daran, die Klammer richtig zu formatieren: JA
IF 1==1 (ECHO Eins gleich Eins!) ELSE (ECHO Mit diesem Programm stimmt etwas nicht.)NEIN
IF 1==1(ECHO Eins gleich Eins!)ELSE(ECHO Mit diesem Programm stimmt etwas nicht.)Es gibt auch eingebaute Variablen
%CD%%DATE%%TIME%%RANDOM%%CD% Erweitert zum aktuellen Verzeichnis. Grundsätzlich ist der Pfad hinter dem ersten >%DATE% und %TIME% das Datum und die Uhrzeit.%RANDOM% ergibt eine Zufallszahl zwischen 0 und 32767. Der Bereich kann nicht geändert werden, glaube ich nicht. Und das wars im Grunde! Ich hoffe, Sie haben dieses instructable genossen, ich habe wirklich hart daran gearbeitet. Hoffentlich wird es die 10-monatige Abwesenheit ausgleichen. Jetzt die schlechten Nachrichten. Ich werde in den nächsten Monaten ein bisschen Schwierigkeiten haben, Fragen zu beantworten, da ich nicht im Land bin. Aber wenn Sie eine Frage haben, hinterlassen Sie einfach einen Kommentar. Wenn ich Zugang zu einem Computer bekomme, werde ich sicher antworten, aber ich denke nicht, dass das notwendig sein wird; Instructables ist eine freundliche Gemeinschaft, und ich bin sicher, dass Ihnen jemand da draußen in Ihrer Notlage helfen wird. Happy Batching!
Empfohlen:
Erweiterter Linienfolgeroboter - Gunook
Advanced Line-Following-Roboter: Dies ist ein fortschrittlicher Line-Following-Roboter, der auf Teensy 3.6 und QTRX-Liniensensor basiert, den ich gebaut habe und an dem ich seit einiger Zeit arbeite. Es gibt einige wesentliche Verbesserungen im Design und in der Leistung von meinem früheren Line-Following-Roboter. T
Erweiterter LED-Anhänger - Gunook
Fortgeschrittener LED-Anhänger: In diesem anweisbaren zeige ich Ihnen, wie Sie Ihren eigenen LED-Anhänger herstellen können. Sie sollten meinen vorherigen LED-Anhänger überprüfen, ich zeige dort einige tolle Tipps. Ist Schmuck ein Teil der Schönheit? Wir werden es rausfinden
Erweiterter Linienfolger-Roboter - Gunook
Advanced Line Follower Robot: Dies ist ein Line Follower Roboter mit einigen zusätzlichen Funktionen. Dieser Prototyp kann in einer Fabrik für den fahrerlosen Materialtransport verwendet werden. Es gibt zwei Stationen Ladestation EntladestationVon Ladestation wartet Roboter auf Material
D4E1: Lesetool 2.0 (Erweiterter Produktionsprozess): 9 Schritte
D4E1: Lesetool 2.0 (Advanced Production Process): Info:- Zwei Studenten Industrial Product Design in Kortrijk (Belgien) haben dieses Lesetool entwickelt. Wir haben ausgehend von einem bestehenden Design angefangen und es zu einem anderen Design weiterentwickelt. Das Lesetool wurde ursprünglich für einen Client entwickelt
Erweiterter Spiegel - Gunook
Augmented Mirror: Es spiegelt Ihre Bewegung wider; Der Augmented Mirror verwendet eine Zeichenmaschine und einen Distanzsensor, passt eine gegebene Geometrie an seinen Sensoreingang an und spiegelt Ihre Bewegung auf einem Blatt Papier