Advanced Batch

12 Schritt:Schritt 1: Startbefehl Schritt 2: SET Kommando - String Theory (1/4) Schritt 3: SET-Befehl - Mr.Math (2/4) Schritt 4: SET-Befehl - User Input (3/4) Schritt 5: SET-Befehl - Mehr als das Auge (4/4) Schritt 6: Wenn die Befehls - alle gleich (1/2) Schritt 7: Wenn die Befehls - Aber ich bin größer, als Sie (2/2) Schritt 8: GOTO-Befehl Schritt 9:> Parameter (1/2) Schritt 10: >> Parameter (2/2) Schritt 11: Beispiel-Implementierung Schritt 12: Fazit: Abschließende Hinweise

Advanced Batch

Advanced Batch

Advanced Batch

Bitte richten Sie Ihre Fragen, die Sie in meinem Blog HABEN:
http://tamsanh.com/blog/2008/07/11/batch-tutorial-3-advanced-batch/

Ich weiß nicht instructables besuchen mehr, und Sie werden eine schnellere Reaktion auf diese Weise zu erhalten.

Hey Leute! Tam Nguyen hier. Es ist schon lange auf sich warten, aber es ist jetzt hier! Ich stelle Ihnen die nächste Rate meiner Batch Tutorials!

Sie können (oder auch nicht) haben meine anderen instructables zu lesen:

Grundlagen der Batch
Etwas mehr Advanded Batch

Diese Instructable leiht einige Elemente aus den ersten beiden Instructables. Nämlich:
Echo-Befehl
CD-Befehl
Dir-Befehl

Wenn Sie die beiden anderen nicht gelesen haben, schlage ich vor, die über die Befehle der rechten Maus schnell. Ich warte hier.

Ok!

Bis Ende dieses Instructable, werden Sie intim mit:
Startbefehl
SET-Befehl
Wenn die Befehls
GOTO-Befehl
und
> Und >> Parameter

Mit diesen Befehlen werden Sie in der Lage, dynamische Batch-Dateien, die nach Benutzereingaben zu ändern machen können, und erstellen und zu erweitern.

Also lassen Sie uns eröffnen, dass guten alten Eingabeaufforderung, und los!

Ausführen -> cmd

Alternativ können Sie zu gehen:

Start-> Programme Dateien-> Zubehör-> Eingabeaufforderung

Meine explainations in diesem instructable bekam ein wenig lang, also habe ich ein paar Befehle in mehr als eine Seite in erster Linie für ästhetische Zwecke aufgeteilt; Ich mochte sehen die Bilder, während der Lektüre des Textes, ohne oben und unten scrollen.

Faustregel für die Bildbetrachtung; In der Regel nach jedem Code Snippet, gibt es ein Bild.

Viel Spaß!
Schritt 1: Startbefehl



Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Der Startbefehl ist ein nettes kleines Kommando, das Zeug beginnt!

Es ist ein einfacher Befehl ein, und wird uns helfen, sich aufzuwärmen, bevor wir zu den härteren Befehle zu erhalten.

Die Parameter des Befehls sind genau das, was Sie denken, sie sind.
  START ThingToBeStarted.exe 
Ziemlich einfach.
  START wmplayer.exe 
Sie können nicht nur START .exe ist, können Sie auch geben Sie eine Website in, und es wird in Ihrem Standard-Browser zu öffnen!
  START www.Instructables.com 
Ziemlich einfach, nicht wahr? Ok. Lassen Sie uns nun auf das reale Fleisch der Instructable: SET Kommando.
Schritt 2: SET Kommando - String Theory (1/4)

Advanced Batch

Advanced Batch

Der SET-Befehl: Die Variable Definer.

Ah. Variablen. Der Entwickler-Ambrosia. Variablen sind Speicherbits, die sind ... äh, variabel. Kein Wenn und NOTs darüber! (lol, sorry). Ok! Also, wie ist dieses Baby zu arbeiten?

Ganz einfach, sind die Parameter des Befehls SET:

SET Variablenname = Variablenwert

Von selbst eingestellt werden String-Variablen zu erstellen.

  SET TestVS = Test Variable String! 

In diesem Fall haben wir gerade gespeicherten Wert "Test Variable String!" in die variablen TestVS.
Nun, das ist alles Spiel und Spaß, aber wie können wir den Variablenwert abzurufen? Wir gebrauchen %.

Fügen Sie einfach% um den Variablennamen.

  ECHO% TestVS% 

Ok cool, aber was kann man tun?
Schritt 3: SET-Befehl - Mr.Math (2/4)

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Kann es tun Mathe? Nun machen wir eine einfache Batch um es zu testen.

  ECHO Test = 1ECHO% Testen% SET Test =% Testen% -1ECHO% Testen% PAUSE OFFSET 

Oh, was ist passiert? Das sollte gearbeitet haben! Warten Sie eine Minute ... was war, dass nur etwa SET-Befehle Herstellung Strings?

Ja. Der SET-Befehl selbst nur schaffen eine String-Variable, was bedeutet, es wird die meisten wörtlichen Auslegung der Wert zu schaffen.
Es muss nicht denken, "1-1" gleich "0", glaubt, dass es von "1-1" gleich "1 - 1."
So, wie wir das ändern?

Wir wollen, dass die Variable nicht direkt kopiert werden, aber ausgewertet. Dies bedeutet, dass wir, um es von einem String drehen in einen Ausdruck wünschen! Eine sehr einfache Änderung, fügen Sie einfach a / a mit dem Befehl SET.

Hier ist eine einfache Batch-Datei, um es in Aktion zu sehen, oder Sie können einfach tippen Sie Ihre Eingabeaufforderung Handbuch. Ich schlage vor, letztere; es ist viel schneller, und der Code ist nicht zu kompliziert, aber wenn Sie wirklich wollen, die Batch-Datei, hier ist es:

  ECHO OFFSET / einen Test = 2 + 2ECHO% Testen% PAUSE 

Fantastic! Es drückte es perfekt. Jetzt wissen wir, was Änderungen an unseren 'math test.bat' vorgenommen werden müssen

  ECHO OFFSET / einen Test = 1ECHO% Testen% SET / a Test =% Testen% -1ECHO% Testen% PAUSE 

Ok. Lassen Sie uns also führen Sie es!

Groß! Es funktionierte perfekt! Aber was nun?
Schritt 4: SET-Befehl - User Input (3/4)

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Der Satz hat auch die Fähigkeit, den Benutzer zur Eingabe aufgefordert.

Durch das Hinzufügen / p, um den eingestellten Parametern, verwandelt sie es von einem normalen variablen Einsteller zu einem Benutzer-Regelgröße Setter.

  SET / p UDefine = 

Mit der / p, das Programm tatsächlich pausiert und wartet auf die Eingabe des Benutzers.

Aber warten Sie, glaube ich nicht, eine / einen Parameter zu sehen, bedeutet das, dass die Variable ist nur ein String?

Nun, irgendwie. Der / p der Parameter negiert völlig die / a, und wenn Sie es versuchen, erhalten Sie einfach eine fehlende Operandenfehler. Dies bedeutet, dass die benutzerdefinierte Variable nicht in der Lage, um Ausdrücke zu bewerten.

Also, was kann man tun?

Nun, hier ist eine schwierige Trick, den ich aus, dass wir verwenden können, gedacht.
Der SET-Befehl nicht all die gleichzeitige Verwendung von Parameter / p und / ein, richtig? Nun, was ist mit den aufeinanderfolgenden Verwendung der Parameter / a und / p?
Ahhh ... Sie Sly Stiefel.

  ECHO OFFECHO Calculator Version 1.0ECHO.SET / p UDefine = SET / a UDefine =% UDefine% = ECHO ECHO% UDefine% ECHO.PAUSE 

Nizza Rechner ya da. Wenn Sie nicht von jetzt dachte, es haben, die {{{ECHO.}}} Ist eine Leerzeile.

Ist das nicht cool-cool?
Schritt 5: SET-Befehl - Mehr als das Auge (4/4)

Advanced Batch

Advanced Batch

Advanced Batch

An dieser Stelle mag es scheinen, dass die Variablen der Befehl SET ist nur gut für Zeichenfolgen und Ausdrücken. Nicht wahr. Die Variablen sind in der Tat sehr, sehr flexibel und sind nicht nur auf ECHO beschränkt.

Haben Sie versucht, nur die Eingabe einer Variablen von selbst?

  SET Test = Instructables% Testen% 

Was für eine seltsame Fehler ... sie sagt, dass der Befehl "Instructables" nicht erkannt wird, nicht, dass% Testen% hatten keine Syntax. Das heißt also, dass DOS jede Variable behandelt, wie es wurde von Hand eingegeben. Nun, was ist, wenn ...

  SET Test = START cmd.exe% Testen% 

Eindrucksvoll! Es funktionierte!

DOS behandelt jede Variable wie sie vom Benutzer eingegeben und führt sie entsprechend. Hier ist eine interessante Code: (Einfach Copy / Paste, es ist ein bisschen langweilig.)

  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%Pause 

Ist das nicht ordentlich? Jede Variable enthält zwei Buchstaben der gesamten Nachricht (außer Variable2), und setzen Sie die Variablen, um, fügt jeder Buchstabe auf, und beendet den gesamten Befehl ECHO Cool!

Der Befehl SET ist eine der komplizierteren und leistungsfähige Befehle des DOS-Wörterbuch.
Schritt 6: Wenn die Befehls - alle gleich (1/2)

Advanced Batch

Advanced Batch

Advanced Batch

Das klassische bedingter Operanden. Einfach, aber leistungsfähige none-the-less.

Für diejenigen, die noch nie programmiert haben, ist der IF-Befehl genau, wie es sich anhört. Wenn ein Ausdruck in der Syntax erweist sich als wahr (oder auch nicht wahr ist), dann werden schon am nächsten Folge von Befehlen auszuführen.

Die grundlegende Befehlszeile lautet:

  IF% variable1% ==% variable2% ECHO Dieser Teil wird ausgeführt 
oder wenn Sie mehr als eine Syntax.
  ECHO OFFIF% variable1% ==% variable2% (Echo Dieser Teil ist executed.ECHO Also das ist.) ELSE (ECHO Wenn variable1 nicht = Variable 2, dies happens.ECHO und das geschieht auch.) 

Hinweis: Die besondere Platzierung von Klammern nicht, weil ich nicht in organisierten Code glauben, sondern weil, wenn sie nicht an den Orten, die ganze IF-Snippet wird nicht funktionieren. So, wenn es irgendeinen Fehler mit IF-Code, ist es sehr wahrscheinlich, weil der Klammer.

Um dieses spezielle Batch-Lauf, ich tatsächlich verwendet die Eingabeaufforderung selbst, so dass ich die Variablen, ohne die IfVariableTest.bat mehrfach zu bearbeiten eingestellt.
Schritt 7: Wenn die Befehls - Aber ich bin größer, als Sie (2/2)

Advanced Batch

Advanced Batch

Advanced Batch

OK, also du hast eine schöne IF-Anweisung und alle, und zu prüfen, ob Variablen gleich oder nicht, ist schön und alle, aber nicht ganz genau das Richtige. Ich möchte, dass etwas passiert, wenn variable1 ist kleiner als die anderen Variablen!

Für diejenigen von uns Programmierern, ich weiß, dies scheint wie eine einfache Aufgabe. Nur tun, was alle anderen Programmiersprachen zu tun!

Nun halten Sie Ihre Pferde Cowboy. Nicht so schnell. Eine Batch-Datei ist nicht nur Ihre regelmäßigen ol 'Programmier langage. Dumm, wie es scheinen mag, die "<" und ">" funktionieren nicht mit Batch-Dateien.
  EQU - Gleich - == NEQ - Nicht EqualLSS - Weniger ThanGTR - Großer ThanLEQ - Kleiner als oder gleich ToGEQ - Größer als oder gleich 
Legen Sie einfach diese Operanden anstelle des ==

Beispiel:
  IF 32 GTR 3 ECHO dies funktionieren wird 
  ECHO OFFIF 32 GEQ 32 (ECHO 32 ist größer als oder gleich 32) ELSE (ECHO 32 ist auf jeden Fall gleich 32) PAUSEIF 32 LSS 32 (ECHO 32 weniger als 32? Ich glaube nicht.) ELSE (ECHO 32 nicht weniger als 32 Ende der Geschichte.) PAUSE 
Schritt 8: GOTO-Befehl

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Die GOTO-Befehl. Es tut genau, was es sagt; geht es zu einem Label in der Batch-Datei-Skript.

Um diesen Befehl zu verwenden, müssen Sie zuerst ein Etikett an Ort und Stelle. Labels wie folgt aussehen:
  : Label1 
Es ist einfach ein Doppelpunkt vor einem nicht-angeordnete Reihe von Buchstaben und / oder Zahlen.

Der Befehl GOTO ist strukturiert wie folgt aus:
  GOTO Label1 
Es ist so einfach!
Kommen Sie, daran zu denken, ich bin nicht wirklich sicher, warum ich nicht dieses in den Slightly Advanced Batch.

In jedem Fall kann dieser Befehl verwendet werden, um eine Batch-Datei, indem Sie einfach GOTO ein Label, das erneut den Befehl GOTO führt zu wiederholen.

  ECHO OFF: RepeatMeECHO Dies wird wiederholt werden, wenn Sie "CTRL-C" Hit GOTO RepeatMe 
Die Batch-Datei die Wahrheit spricht, übrigens. CTRL-C ist die universelle Pause und Eingabeaufforderung für Termination. CTRL-S wird einfach Pause. Aber Schließen des Fensters funktioniert genauso gut.

Die GOTO können überspringen oder neu anordnen Ihren Code auch.
  GOTO TurnEOffGOTO MultipleGotoECHO Das ECHO wird sich übersprungen werden:. MultipleGotoGOTO 3: ENDPAUSEEXIT: 1ECHO Die EndGOTO END: 3ECHO Dies wird angezeigt firstGOTO 2: TurnEOff @ ECHO OFFGOTO MultipleGoto: 2ECHO Dies ist zweitens, auch wenn es in der letzten code.GOTO 1 
Der obige Code wurde zum Verwechseln absichtlich so strukturiert, dass die GOTO-Fähigkeit, um im Code springen, zu betonen.
Schritt 9:> Parameter (1/2)

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Das nächste Bit ist nicht wirklich ein "Befehl", sondern ein zusätzlicher Syntax in anderen Befehlen. Was sie tut, ist es nimmt den Ausgang eines bestimmten Befehl ein, und kann sie in eine Textdatei zu schreiben. Es ist einfacher zu erklären, wenn Sie es in Aktion zu sehen, erste.
Die Syntax ist:
  Command> Dateiname 
Ok, also lassen Sie uns sagen, dass wir in einem bestimmten Verzeichnis befinden. Wir verwenden Sie dann den DIR-Befehl, der, wenn Sie die Grundlagen der Batch zu lesen, die Sie als mit dem Inhalt Ihres aktuellen Verzeichnisses wissen.
  C: \ Users \ Neo \> DIR 
Normalerweise Ausgang:
  Datenträger in Laufwerk C ist HP Volume Serial Number ist BC7E-E26C Verzeichnis C: \ Users \ Neo06 / 30/2007 11.14 <DIR> .06 / 30/2007 11.14 <DIR> ..03 / 17 / 2007 06.41 <DIR> .idlerc02 / 19/2007 3.14 <DIR> Contacts06 / 19/2007 10.44 <DIR> Desktop06 / 29/2007 8.47 <DIR> Documents06 / 19 / 2007 10.35 <DIR> Downloads02 / 19/2007 3.14 <DIR> Favorites02 / 19/2007 3.14 <DIR> Links05 / 12/2007 4.01 <DIR> Music06 / 30/2007 01 : 20 AM <DIR> Pictures04 / 07/2007 3.08 <DIR> Gespeicherte Games02 / 19/2007 3.14 <DIR> Searches03 / 01/2007 7.23 242947-Test Record.wma06 / 19/2007 10 : 39 AM <DIR> Videos06 / 18/2007 09.57 1324574 wp_screenprint_mc.pdf06 / 18/2007 9.59 73996533 wp_tshirt_full.mp4 4 Datei (en) 75.564.054 Bytes 14 Dir (n) 132.927.537.152 Bytes frei 
Aber, wenn wir hinzufügen, die> und sie ...
  C: \ Users \ Neo \ DIR> DIRContents.txt 
Wir haben nicht eine Ausgabe zu erhalten, aber stattdessen eine brand spankin'-neue Textdatei mit dem Namen DIRContents.txt dem der Ausgang in sich hat erhalten wir! Coolness!

Aber warten Sie, es gibt ein Problem! Ich möchte mehrere Ausgänge auf dieselbe Datei haben, aber meine> hält gerade zu überschreiben, und nicht indem es! Was kann ich tun?
Schritt 10: >> Parameter (2/2)

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Nun, ich bin froh, dass Sie gefragt. Das ist, was die >> Parameter ist für die!

Der >> ist ebenso wie die>, aber anstatt komplett überschreibt die angegebene Datei, hinzufügen wir es!

Also versuchen wir es.
  DIR >> DIRContents.txt 
Ordentlich! Perfekt funktioniert! So warten. Heißt das, dass ich kann, was ich will in eine Textdatei zu schreiben? Ich will es versuchen!
  Batch Is Awesome> Awesome.txt 
Was? Warum hast du nicht, dass zu arbeiten? Es ist, weil der Parameter schreibt nur den Ausgang des Legitime Befehle, nicht nur alles, was Sie geben. Aber, ein Problem, das nur gelöst wird, ist dies. Denken Sie daran, die Parameter notieren Sie die Ausgabe von Befehlen. Welcher Befehl hat eine Leistung, die wir kontrollieren können?

Recht! Der Echo-Befehl!
  ECHO Batch Is Awesome> Awesome.txtECHO Ich bin so froh, dass ich weiß es. >> Awesome.txt 
Yay! Erinnern. Der >> fügt die Ausgabe in der nächsten Zeile der Datei.
Schritt 11: Beispiel-Implementierung

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Advanced Batch

Ok. Also lassen Sie sie alle zusammen! Hier sind einige Beispielcodes die ich gemacht habe, die die Befehle habe ich Sie in diesem instructable gezeigt zu verwenden.

Dieser Code wird 1 zu einer Variablen ständig hinzufügen und auf unbestimmte Zeit das Ergebnis auszugeben.
  ECHO OFFSET / eine num = 1: RepeatECHO% num% SET / a num =% num% + 1GOTO Wiederholen 

Dieser Code wird CMD.exe 5 Mal starten.
  ECHO OFFSET / eine RepeatNum = 5: OpenIF% RepeatNum% == 0 GOTO EndSTART CMD.exeSET / a RepeatNum =% RepeatNum% -1GOTO begonnen: End 

Dieser Code wird eine Batch-Datei in dem C: \ Users \ Neo, und wird weiter spielen können.
  ECHO OFFCHDIR C: \ Users \ NeoECHOECHO OFF> Hello.batECHO ECHO Hallo >> Hello.batECHO ECHO Ich bin in Ihrem C-Laufwerk >> Hello.batECHO PAUSE >> Hello.batC:! \ Users \ Neo \ Hello.batPause 

Dies ist ein kleines Spiel Charge. Sie müssen die Anzahl erraten.
  ECHO OFFSET / a GuessNum = 0SET / a Answer =% RANDOM% ECHO Ratet mal, was Anzahl Ich denke an:. RetrySET / p Raten = IF% Vermutung% LSS% Antwort% ECHO Meine Nummer ist Higher.IF% Vermutung% GTR Antwort%% echo Mein Number ist lower.If% Vermutung% ==% Antwort% GOTO ENDECHO.SET / a GuessNum =% GuessNum% + 1GOTO Retry: ENDECHO Sie sind richtig!  Die Antwort war% Antwort% echo Es dauerte% GuessNum% Guesses.ECHO.PAUSE 
Und dieses, Ich mag eine Menge. Wenn Sie nicht vorsichtig sind, kann es jedoch aus der Hand ziemlich schnell zu bekommen, je nach Fähigkeit des Computers ein. Was diese Datei tut, ist es auf unbestimmte Zeit erstellt nummerierte Text-Dateien in einem Verzeichnis namens lolnumbers. Jeder dieser Textdateien enthält das DIR des lolnumbers Verzeichnis. Die Sache ist, wird das Verzeichnis ständig immer voller und voller mit Text-Dateien, so dass jede aufeinanderfolgende Text-Datei größer als die letzte ist. Das Ergebnis davon ist ein Ordner, deren Gesamtgröße immer größer wird jede Sekunde.
  ECHO OFFSET / a num = 1MKDIR lolnumbersCD lolnumbers: RestartDIR>% num% .txtSET / a num + = 1GOTO Restart 

Diese sind ziemlich einfach Codes. Experimentieren Sie mit ihnen, um nach Herzenslust.
Schritt 12: Fazit: Abschließende Hinweise

Advanced Batch
Puh. Wir deckten ein verdammt viel in diesem instructable. Dieses ist, infact, 3-mal länger als meine letzte. Ich hoffe, dass YA'LL genossen!

Nur ein paar Erinnerungen, bevor ich gehe.

Erinnern:
Wenn seting eine Variable, Sie niemals einen Raum zwischen der Variable und ihren Wert.

JA:
  SET variable1 = Wert 
Der zusätzliche Platz wird dazu führen, Variable leer.

NEIN:
  SET variable1 = Wert 

Auch die mehrfache IFs. Denken Sie daran, um die Klammer korrekt zu formatieren:

JA:
  IF 1 == 1 (ECHO eins gleich eins!) ELSE (ECHO Irgendetwas stimmt nicht mit diesem Programm.) 

NEIN:
  IF 1 == 1 (ECHO eins gleich eins!) ELSE (ECHO Irgendetwas stimmt nicht mit diesem Programm.) 

Auch gibt es integrierte Variablen auch.
  % CD %% DATE %% %% TIME RANDOM% 
% CD% erweitert, um das aktuelle Verzeichnis. Grundsätzlich ist der Weg hinter dem ersten>
% DATE% und% TIME% sind das Datum und Uhrzeit.
% RANDOM% gibt eine Zufallszahl zwischen 0 und 32767 Das Angebot kann nicht geändert werden, glaube ich nicht.

Und das ist im Grunde ist es! Ich hoffe, dass Sie diese instructable genossen, ich arbeitete wirklich hart drauf.

Hoffentlich wird es machen für die 10 Monate Abwesenheit.

Jetzt die schlechte Nachricht. Ich werde ein wenig Mühe Fragen in den nächsten Monaten zu beantworten haben, denn ich werde von Land zu sein. Aber wenn Sie eine Frage zu tun, lassen Sie einfach einen Kommentar niemandem. Wenn ich bekomme Zugang zu einem Computer, werde ich sicher sein zu antworten, aber ich glaube nicht, dass notwendig sein wird; Instructables ist eine freundliche Gemeinschaft, und ich bin sicher, dass jemand da draußen werden Sie in Ihrer Notlage zu helfen.

Glückliche Batching!