Jeder kann Fledermausdateien schreiben! Bat-Dateibefehle (Windows)

Jeder kann Fledermausdateien schreiben!

Befehlsprozessor

Viele Betriebssysteme, darunter auch die von Microsoft, enthalten einen Befehlsprozessor. Dies ist der Name eines Programms, das als Reaktion auf vom Benutzer über die Tastatur eingegebene Befehle die Ausführung verschiedener Aktionen initiiert. Im Wesentlichen bestehen diese Aktionen aus Laufen notwendige Programme mit bestimmten Parametern. Aber nicht nur; Wir werden später sehen, dass einige Befehle direkt vom Befehlsprozessor ausgeführt werden. Im Grunde handelt es sich dabei um Befehle, die dazu dienen, den Kontext und die Reihenfolge der Befehlsausführung zu steuern. Allerdings werden wir nicht zu tief über die Natur von Befehlen nachdenken, zumindest nicht, wenn wir es müssen. Noch wichtiger ist, dass jedes Programm, das technisch über die Befehlszeile ausgeführt werden kann, vom Befehlsprozessor als Befehl betrachtet wird. Es wird nicht zwischen den nativen Befehlen, die ursprünglich in das Betriebssystem integriert waren, und Programmen, die darauf installiert wurden, unterschieden.

So starten Sie den Befehlsprozessor:

    Klicken Sie auf die Schaltfläche Start. Das Hauptmenü wird auf dem Bildschirm angezeigt.

    Wählen Sie im Hauptmenü „Ausführen“ aus. Auf dem Bildschirm erscheint ein Dialogfeld Starten des Programms.

    Geben Sie im Feld „Öffnen“ die Zeichenfolge ein cmd.

    Klicken Sie auf die Schaltfläche OK. Auf dem Bildschirm erscheint ein Befehlsprozessorfenster.

Befehlszeile und Befehle

Das Befehlsprozessorfenster sieht in seiner ursprünglichen Form düster aus und die Arbeit damit ist für die meisten Menschen nicht sehr bequem. Viel einfacher zu bedienen Dateimanager im Norton Commander-Stil. Sie bieten beide Möglichkeiten zur schnellen Navigation Dateisystem, und das Zeitlimit für die Eingabe von Befehlen.

So geben Sie den Befehl ein:

    Geben Sie den Befehlstext ein Befehlszeile.

    Drücken Sie die Taste Eingeben.

Befehlsprozessor und Befehle Betriebssystem sind in deren Betriebsanleitung beschrieben. Diese Dokumentation ist teilweise im Betriebssystem selbst enthalten. Um darauf zuzugreifen, verwenden Sie den Befehl helfen. Dieser Befehl zeigt eine Liste der verfügbaren Befehle an. Um eine Beschreibung eines bestimmten Befehls zu erhalten, verwenden Sie den Befehl als Parameter helfen Ihr Name sollte angegeben werden. Die in der folgenden Auflistung gezeigte Befehlszeile zeigt eine Beschreibung des Befehls an für.

Wenn Sie versucht haben, den Befehl einzugeben helfen, ist Ihnen wahrscheinlich aufgefallen, dass das Ergebnis seiner Arbeit (die sogenannte Ausgabe) nicht auf einen Bildschirm passt. Das gleiche Problem tritt mit dem Befehlsbeschreibungstext auf für. Die gute Nachricht ist, dass die Ausgabe in eine Datei umgeleitet werden kann. Die in der folgenden Auflistung gezeigte Befehlszeile generiert die Datei commands.txt, enthält eine Liste aller MS-DOS-Befehle.

Hilfe > commands.txt

Um eine Datei mit einer Beschreibung des Befehls zu generieren für, müssen Sie den folgenden Befehl eingeben (Sie können der Ausgabedatei einen beliebigen Namen geben).

Hilfe für > for.txt

Insgesamt gibt es in modernen Microsoft-Betriebssystemen etwas weniger als 80 Befehle, und es ist unmöglich, sie in einem Artikel zu beschreiben. Hier können wir nur einige Befehle erwähnen, die zur Automatisierung der Dateiverarbeitung nützlich sind, und zeigen, wie man sie verwendet. Diese Befehle werden in weiteren Beispielen verwendet. Sie können die Details jederzeit per Befehl klären helfen oder im Verzeichnis.

Kopieren- Kopieren einer oder mehrerer Dateien;

del- Löschen einer oder mehrerer Dateien;

bewegen- Verschieben einer oder mehrerer Dateien oder Verzeichnisse;

umbenennen(abgekürzt ren) – Umbenennen einer oder mehrerer Dateien oder Verzeichnisse;

xcopy- Kopieren des Unterverzeichnisbaums;

mkdir(abgekürzt md) - Erstellen eines Verzeichnisses;

rmdir(abgekürzt rd) – Löschen eines Verzeichnisses.

Einer von Allgemeine Regeln Die Befehlssyntax von MS-DOS besteht darin, dass bei der Angabe von Parametern zuerst die Quelle und dann das Ergebnis angegeben wird. Zum Beispiel, wenn wir eine Datei verschieben möchten bier.txt aus dem Katalog Kasten zum Katalog Tisch, müssen wir den im folgenden Listing angegebenen Befehl eingeben.

Verschieben Sie die Tabelle box\beer.txt

Zuerst, was umgezogen werden soll, dann wohin.

Wenn wir die Datei umbenennen möchten lena.txt einordnen natasha.txt, dann sollte der Befehl wie unten gezeigt geschrieben werden.

ren lena.txt natasha.txt

Zuerst, was umbenannt werden soll, dann was umbenannt werden soll.

Aktuelles Verzeichnis. Absolute und relative Pfade

Beim Arbeiten mit Dateibefehlen ist das Konzept des aktuellen Verzeichnisses äußerst wichtig. Der Punkt ist, dass wir bei der Angabe einer Datei als Befehlsparameter immer eine von zwei Möglichkeiten verwenden, um auf sie zu verweisen: entweder einen absoluten Pfad oder einen relativen Pfad. Im vollständigen Pfad geben wir alles an, beginnend mit dem Laufwerk (oder Netzwerk). Computername), Zum Beispiel d:\misha\box\beer.txt. Welches Verzeichnis auch immer gerade aktuell ist, wenn der Befehl eingegeben wird, der vollständige Pfad entspricht derselben Datei. Bei einem relativen Pfad dient das aktuelle Verzeichnis als Ausgangspunkt. Der einfachste Fall eines relativen Pfads ist ein Dateiname. Im Kontext der Befehlsausführung bedeutet dies eine Datei mit diesem Namen, die sich im aktuellen Verzeichnis befindet.

Um einen relativen Pfad zum aktuellen Verzeichnis zu schreiben, gibt es einen bedingten Eintrag . (Punkt). Um den relativen Pfad zu dem Verzeichnis aufzuzeichnen, das das aktuelle Verzeichnis enthält, gibt es eine bedingte Notation .. (zwei Punkte). Der in der folgenden Auflistung gezeigte Befehl kopiert alle Dateien aus dem aktuellen Verzeichnis in das Verzeichnis Nachbar, daneben gelegen.

kopieren *.* .\neighbor

Batch-Dateien

Bisher gingen wir bei der Nennung von Beispielen davon aus, dass wir Befehle jedes Mal manuell eingeben würden. Bei der Verarbeitung einer großen Anzahl von Dateien oder der systematischen Ausführung derselben Befehle wird dies umständlich. Daher bietet der Befehlsprozessor die Möglichkeit, Befehlsdateien auszuführen. Die Batchdatei ist Textdatei, in dem die Befehle (oder mindestens ein Befehl) eingegeben werden. Eine Beispiel-Batchdatei ist in der folgenden Auflistung dargestellt. Versuchen Sie zu erraten, was diese Batchdatei bewirkt.

Hilfe kopieren > copy.help

help move > move.help

move *.help msdos-help

Wenn Ihnen der Zweck dieser Datei unbekannt bleibt, versuchen Sie, sie tatsächlich zu erstellen und auszuführen. Es ist üblich, Befehlsdateien die Erweiterung zu geben Schläger. Dadurch werden Dateien dieses Typs vom Befehlsprozessor erkannt. Diese Datei kann zum Beispiel heißen: make-help.bat.

So führen Sie die Batchdatei aus:

    Geben Sie seinen Namen als Befehl ein. Anschließend wird die Batchdatei ausgeführt.

In einer Batchdatei nimmt jeder Befehl eine Zeile ein. Genauer gesagt gibt es eine Möglichkeit, einen Befehl in mehreren aufeinanderfolgenden Zeilen zu platzieren; dazu sollten Sie unmittelbar vor jedem Zeilenumbruch das „Cap“-Symbol setzen ^ . (Jedes Großbuchstaben muss das letzte Zeichen in seiner Zeile sein; es dürfen keine Leerzeichen oder Tabulatoren dahinter stehen.) Ein Beispiel für einen solchen Befehl ist in der folgenden Auflistung dargestellt.

falls vorhanden disser.txt ^

kopieren Sie disser.txt ^

d:\science\papers\drafts\sources

Aber der Einfachheit halber, um nicht jedes Mal Vorbehalte zu machen, gehen wir davon aus, dass es sich gewissermaßen um eine lange „logische“ Zeile handelt.

Wenn eine Batchdatei ausgeführt wird, durchsucht der Befehlsprozessor sie von oben nach unten, von der ersten bis zur letzten Zeile, und führt die Befehle in der Reihenfolge aus, in der sie auf sie stoßen. Im Allgemeinen werden sie so ausgeführt, als ob wir sie manuell eingegeben hätten. Im Allgemeinen verhalten sich einige Befehle etwas anders, wenn sie manuell eingegeben werden und wenn sie aus einer Batchdatei ausgeführt werden.

Nehmen wir für die Zukunft an, dass die Reihenfolge der Befehlsausführung bei Bedarf mithilfe von Steuerbefehlen geändert werden kann (was eine solche Notwendigkeit verursachen kann, ist eine separate Frage).

Verwechseln Sie das aktuelle Verzeichnis nicht mit dem Verzeichnis, in dem sich die zu startende Batchdatei befindet. Nehmen wir an, das aktuelle Verzeichnis ist arbeiten, es enthält ein Verzeichnis Werkzeuge, und im Tools-Verzeichnis werden Batchdateien gespeichert. Eine davon führen Sie mit dem Befehl aus tools\collect-images.bat. „Aus Sicht“ dieser Befehlsdatei wird es also immer noch das aktuelle Verzeichnis sein arbeiten, und nicht Werkzeuge.

Kommentieren der Batchdatei und ihrer Ausgabe. echo- und rem-Befehle

Eine Batchdatei ist im Wesentlichen ein Programm, das in der Befehlsprozessorsprache des Betriebssystems geschrieben ist. Der Text des Programms sollte mit Kommentaren versehen sein, damit Sie sich bei späterer Rückkehr nicht mühsam daran erinnern müssen, warum dieses Programm benötigt wird und wie es funktioniert.

Das MS-DOS-Befehlssystem bietet einen Befehl zum Erstellen von Kommentaren: rem. Dies ist ein Dummy-Befehl, der keine Aktionen erfordert, Ihnen aber das Schreiben eines beliebigen Textes in die Zeile nach Ihrem Namen ermöglicht. Darüber hinaus erkennt der Befehlsprozessor dies nicht als Syntaxfehler. Ein Beispiel für die Formatierung einer Befehlsdatei mit Kommentaren ist in der folgenden Auflistung dargestellt.

rem *************************************************** ****

rem Generieren von Hilfedateien

Hilfe kopieren > copy.help

help move > move.help

move *.help msdos-help

Beachten Sie die Leerzeilen, die die Batchdatei in „Absätze“ unterteilen. Mit diesem einfachen Trick können Sie Ihre Batchdatei besser lesbar machen.

Wenn Sie die obige Batchdatei ausführen, werden alle Befehle während der Ausführung auf dem Bildschirm angezeigt, was nicht immer praktisch ist. Die Befehlsausgabe kann mit dem Befehl deaktiviert werden @echo aus. Das „Hund“-Symbol vor dem Befehl Echo Dies bedeutet, dass dieser Befehl selbst im „Silent“-Modus ausgeführt werden muss. Wir könnten genauso gut nicht die Befehlszeile verwenden Echo aus, aber platzieren Sie vor jedem Befehl einen „Hund“.

In vielen Fällen möchten Sie, dass eine Batchdatei bestimmte Meldungen auf dem Bildschirm (oder in einer Datei) anzeigt. In einigen Fällen kann es sich dabei um Fehlermeldungen handeln, in anderen um Informationsmeldungen, die dem Benutzer der Batch-Datei erklären, was gerade passiert, wenn wir mit der Batch-Datei eine andere nützliche Datei erstellen. Derselbe Echo-Befehl wird zum Anzeigen von Nachrichten verwendet. Als Parameter wird ihm der Text der anzuzeigenden Meldung übergeben. Die Auflistung der verbesserten Batchdatei ist unten aufgeführt.

rem *************************************************** ****

rem Generieren von Hilfedateien für die Kopier- und Verschiebebefehle

rem *************************************************** ****

@echo Generieren von Hilfedateien. Eine Sekunde...

rem Generieren von Hilfedateien

Hilfe kopieren > copy.help

help move > move.help

rem Erstellen Sie ein Verzeichnis zum Speichern von Hilfedateien

rem Verschieben Sie die Hilfedateien in das vorbereitete Verzeichnis

move *.help msdos-help

echo Fertig!

Übergabe von Parametern an eine Befehlsdatei

Nehmen wir an, wir möchten eine Batchdatei erstellen, die zunächst Hilfe zur Beschreibung eines benutzerdefinierten Befehls generiert und diese dann zur Anzeige in Notepad lädt. Der Trick besteht darin, ihm beim nächsten Ausführen der Batch-Datei irgendwie mitzuteilen, an welchem ​​Befehl wir dieses Mal interessiert sind.

Um dieses Problem zu lösen, wird ein Pbereitgestellt. Es funktioniert ganz einfach. Wenn der Benutzer beim Ausführen einer Batchdatei mehrere Parameter angegeben hat, kennzeichnen wir im Text der Batchdatei den ersten davon mit dem Eintrag %1 , zweiter Eintrag %2 , dritter Eintrag %3 usw. Wir verwenden diese Notationen im Text der Befehlsdatei auf die gleiche Weise, wie wir Pronomen in der natürlichen Sprache verwenden.

Der Text der Befehlsdatei, die das Problem löst, wird in der folgenden Auflistung angezeigt. Achten Sie auf den Befehl helfen. Als Parameter wird ihm der erste Parameter der Befehlsdatei übergeben.

rem Wir erstellen eine Datei mit einer Beschreibung des Befehls,

rem, dessen Name als Parameter übergeben wird

Hilfe %1 > help.tmp

rem Laden Sie die Beschreibungsdatei in den Notepad-Editor

Notepad help.tmp

Nehmen wir an, wir geben dieser Batchdatei einen Namen show-help.bat. Um beispielsweise eine Befehlsbeschreibung in einen Notizblock zu laden, dir, müssen wir den Befehl wie folgt eingeben.

show-help.bat Verzeichnis

Die folgende Befehlsdatei erstellt ein Verzeichnis mit dem im ersten Parameter angegebenen Namen und schreibt darin eine Datei mit dem Text, der den im zweiten Parameter angegebenen Befehl beschreibt.

rem Beispiel einer Befehlsdatei mit zwei Parametern

rem Erstellen Sie ein Verzeichnis mit dem durch den ersten Parameter angegebenen Namen

rem Erstellen Sie darin eine Datei mit einer Beschreibung des Befehls.

rem wird durch den zweiten Parameter angegeben

Hilfe %2 > %1\%2.help

Was passiert, wenn der Benutzer beim Ausführen dieser Batchdatei vier statt zwei Parameter angibt? Es ist in Ordnung, sie stören nichts, sie werden einfach nicht verwendet. Was passiert, wenn der Benutzer nur den ersten Parameter angibt? Der zweite Parameter ist leer. Der Effekt ist folgender: Die Batch-Datei wird ausgeführt, jedoch wie an Stelle der Aufzeichnung %2 es gibt nichts. Der Befehl help generiert eine Liste aller Befehle und speichert sie in einer Datei mit leerem Namen und der Erweiterung .help. Wenn der Benutzer diese Datei ohne Angabe von Parametern ausführt, dann versucht der Befehlsprozessor, den Befehl auszuführen md(Denken Sie daran, dies dient zum Erstellen eines Verzeichnisses.) Wir erhalten einen Syntaxfehler, da der Befehl md einen Parameter haben muss.

Die Verwendung von Parametern bietet also große Chancen, kann die Dinge jedoch erheblich verkomplizieren. Damit die Batchdatei immer korrekt funktioniert, ist es notwendig, die Richtigkeit der vom Benutzer angegebenen Parameter zu überprüfen und irgendwie auf unvollständige oder falsche Eingabedaten zu reagieren. Dies ist natürlich nicht möglich, aber eine fehlerhaft funktionierende Batchdatei kann Probleme verursachen, insbesondere wenn dabei Daten gelöscht oder überschrieben werden.

Variablen. Befehl festlegen

Eine Variable ist ein benannter Wert. In Programmierlehrbüchern wird eine Variable normalerweise mit einem Umschlag verglichen, auf dem ein Name steht. Sie können etwas in den Umschlag stecken, zum Beispiel einen bestimmten Geldbetrag – das ist sein Wert. Wie beim Umschlag kann der Wert der Variablen geändert werden.

Um eine Variable zu deklarieren und ihr gleichzeitig einen Wert zuzuweisen, verwenden Sie den Befehl Satz. Ein Beispiel für diesen Befehl ist in der folgenden Auflistung dargestellt.

Um den Wert einer Variablen zu extrahieren, wird ihr Name wie unten gezeigt zwischen zwei Prozentzeichen gesetzt.

rem Compiler von Hilfedateien im CHM-Format

set help_compiler=c:\HTML Help Workshop\hcc.exe

rem Projekthilfedatei für das Modul „Warehouse“.

setze store_hpj=help\sources\store\store.hpj

rem Projekthilfedatei für das Modul „Vertrieb“.

set sales_hpj=help\sources\sales\sales.hpj

rem Kompilieren Sie Hilfedateien

%help_compiler% %store_hpj%

%help_compiler% %sales_hpj%

Die folgende Auflistung zeigt, warum Variablen nützlich sind.

Erstens ermöglichen sie Ihnen, ein kurzes Fragment als Synonym dafür in einer Batchdatei anstelle eines langen Fragments zu verwenden (z. B. den Pfad zum Hilfedatei-Compiler). Zumindest ist es praktisch.

Zweitens ermöglichen sie es Ihnen, Wiederholungen im Text der Befehlsdatei von Fragmenten zu vermeiden, die sich in Zukunft ändern könnten. Stellen Sie sich vor, wir hätten Microsoft HTML Workshop in einem anderen Verzeichnis neu installiert. Wenn in einer Batch-Datei eine Variable verwendet wird, um den Pfad zu ihr aufzuzeichnen, reicht es aus, nur eine Zeile in der Batch-Datei zu korrigieren, nämlich diejenige, in der der Wert der Variablen zugewiesen ist help_compiler. Wenn wir den Pfad jedes Mal zum Compiler schreiben würden, wenn er aufgerufen werden müsste, müssten wir nach der Änderung des Pfads jede dieser Zeilen korrigieren. Im obigen Beispiel sind es zwei davon, aber in einem echten Projekt könnten es genauso gut fünf oder fünfzehn sein, abhängig von der Anzahl der Hilfedateien, die wir kompilieren möchten. Das Problem besteht nicht darin, dass es schwierig ist, jede Zeile manuell zu korrigieren (schließlich hat niemand die Befehle „Kopieren“ und „Einfügen“ abgebrochen), sondern dass dies die Wahrscheinlichkeit eines versehentlichen Fehlers erheblich erhöht.

Batchdateiparameter sind ebenfalls Variablen, unterscheiden sich jedoch von gewöhnlichen Variablen dadurch, dass ihre Werte beim Starten der Batchdatei festgelegt werden. Wenn wir in Zukunft von Variablen sprechen, insbesondere von der Arbeit mit deren Werten, werden wir, zumindest sofern diesbezüglich keine expliziten Vorbehalte bestehen, auch Befehlsdateiparameter meinen.

Beim Schreiben von Batch-Dateien wird häufig die folgende Technik verwendet: Mehrere Variablenwerte werden nebeneinander angezeigt (oder mit einigen Symbolen oder Zeilen durchsetzt), um so einen neuen sinnvollen Wert zu erhalten. Ein Beispiel ist in der folgenden Auflistung dargestellt.

Bedingungen prüfen und Optionen auswählen. if- und goto-Befehle

Mit dem if-Befehl können Sie Gruppen von Befehlen in einer Batchdatei auswählen, die abhängig von bestimmten Bedingungen ausgeführt oder nicht ausgeführt werden. Wofür ist das?

Die Zustandsprüfung ist fast ein notwendiger Schritt beim Erstellen von Batchdateien, die Parameter verwenden. Vor Beginn der Arbeit muss die Batchdatei im Allgemeinen sicherstellen, dass ihr der richtige Parametersatz übergeben wird. Andernfalls besteht ein hohes Risiko, dass es falsch oder ineffektiv ausgeführt wird und der Benutzer sich nur wundert, wo das Problem liegt. Wenn eine Batchdatei darüber hinaus Daten löscht, verschiebt oder überschreibt, kann dies bei falschen Parametern sogar zu Schäden führen.

Die folgende Auflistung zeigt die Befehlsdatei zur Kompilierung der Hilfedatei, mit der Sie bereits vertraut sind. Am Anfang der Befehlsdatei wurde eine Prüfung auf Nichtleerheit des ersten Parameters hinzugefügt. Bitte beachten Sie dieses Syntaxmerkmal: Die Vergleichsoperation verwendet ein doppeltes Gleichheitszeichen. Wenn der erste Parameter nicht leer ist, wird der Befehl goto ausgeführt, der die Shell auf das angegebene Label „wirft“. In diesem Fall lautet der Name dieser Bezeichnung „compile“. Beachten Sie, dass dort, wo eine Beschriftung erscheint, ihrem Namen ein Doppelpunkt vorangestellt ist, im goto-Befehl jedoch nicht. Wenn der erste Parameter leer ist, wechselt die Shell zur nächsten Zeile, was eine Fehlermeldung erzeugt. Und dann zum nächsten, der es ganz am Ende der Datei auf ein Etikett mit dem Namen überträgt beenden.

wenn nicht "%1"=="" gehe zum Kompilieren

rem Wenn der Parameter leer ist, zeigen wir eine Fehlermeldung an

Echo-Hilfedatei-Projektname nicht angegeben

rem und gehen Sie zum Ende der Batchdatei

rem bis zur Zielmarke

rem Dies ist eine Bezeichnung namens „compile“.

rem Nachfolgend finden Sie die Kompilierungsbefehle

rem Pfad zum Hilfedatei-Compiler

set help_compiler="c:\Programme\HTML Help Workshop\hhc.exe"

rem Pfad zum Verzeichnis, in dem sich die Hilfedateiprojekte befinden

set project_path=e:\work\projects\help-projects

rem Rufen Sie den Compiler auf, um ein bestimmtes Projekt zu verarbeiten.

rem, dessen Name im ersten Parameter übergeben wird

%help_compiler% %project_path%\%1.hpj

rem Dies ist ein Label mit dem Namen „finish“.

Seien wir ehrlich, die vorgeschlagene Methode zur Überprüfung eines Parameters ist nicht die erfolgreichste.

Erstens: Wenn der Benutzer fälschlicherweise den Namen einer nicht vorhandenen Datei als Parameter angibt, begnügt sich die Batchdatei damit und versucht zu kompilieren. Eine korrektere Methode besteht darin, zu überprüfen, ob eine solche Datei tatsächlich existiert. Zu diesem Zweck stellt die MS-DOS-Befehlssprache ein spezielles Wort zur Verfügung existieren. Deshalb wäre es besser zu schreiben: Wenn vorhanden, %1.hpj, gehe zum Kompilieren.

Zweitens die aktive Nutzung des Befehls gehe zu(der sogenannte bedingungslose Sprung) und Beschriftungen verwirren den Code erheblich. Technisch gesehen sind sie nicht schlecht, aber das Debuggen und Verwalten einer in diesem Stil geschriebenen Batchdatei ist ziemlich umständlich. Daher betrachten Programmierer das bedingungslose Springen seit langem als eine unerwünschte Technik. Nachfolgend wird eine aus Sicht des Programmierstils korrektere strukturierte Version gezeigt, die die Konstruktion verwendet ansonsten. Das funktioniert so: Wenn die Bedingung wahr ist, folgen die Befehle in Klammern Wenn, und wenn falsch, dann in Klammern danach anders.

rem Überprüfen Sie, ob der Parameter gesetzt ist

wenn nicht vorhanden %1.hpj (

rem Pfad zum Hilfedatei-Compiler

set help_compiler="c:\Programme\HTML Help Workshop\hhc.exe"

rem Pfad zum Verzeichnis, in dem sich die Hilfedateiprojekte befinden

set project_path=e:\work\projects\help-projects

rem Rufen Sie den Compiler auf, um ein bestimmtes Projekt zu verarbeiten.

%help_compiler% %project_path%\%1.hpj

Lassen Sie uns ein weiteres Beispiel für die Arbeit mit Schecks geben. Die folgende Batchdatei erstellt ein Verzeichnis namens Hilfedateien(Angenommen, um kompilierte Hilfedateien hineinzuladen). Wenn darüber hinaus bereits ein Verzeichnis mit demselben Namen existiert (und es wahrscheinlich alte Hilfedateien enthält, die Sie nicht verlieren möchten: Was wäre, wenn sich die neuen als schlechter herausstellen würden?), weist die Batchdatei ihm die Erweiterung bak zu . Aber wenn das Verzeichnis help-files.bak bereits existierte, dann löscht die Befehlsdatei sie (wir gehen davon aus, dass eine Sicherheitskopie das reicht uns).

Wenn vorhanden, help-files.bak und help-files.bak

Wenn Hilfedateien vorhanden sind, ren Hilfedateien, help-files.bak

Massenverarbeitung von Dateien. für Befehl

Mit dem Befehl for können Sie die Ausführung wiederholter Aktionen desselben Typs organisieren. Sie können damit die Zahlen eins bis zehn anzeigen, wie in der folgenden Auflistung gezeigt.

Für /l %%i in (1,1,10) wird %%i zurückgegeben

Variable ich wird als Schleifenzähler bezeichnet. Aufgrund der einzigartigen Syntax des Befehls für, muss der Name des Schleifenzählers aus einem Buchstaben bestehen. Darüber hinaus müssen wir, wenn wir eine Batch-Datei schreiben, ein doppeltes Prozentzeichen vor den Namen des Schleifenzählers setzen, wenn wir jedoch nur einen Befehl in die Befehlszeile eingeben, dann ein einzelnes.

Die Logik dieses Befehls ist wie folgt. Nach dem Wort In der Änderungsbereich des Zyklenzählers wird angezeigt. In dieser Version des Befehls handelt es sich um ein Zahlentripel: den Anfangswert des Zählers, den Zählschritt, den Grenzwert des Zählers. Beim Ausführen eines Befehls weist die Shell zunächst die Variable zu ich Bedeutung 1 , und dann wird es bei jedem Schritt der Schleife um erhöht 1 bis es übersteigt 10 . Offensichtlich wird es zehn solcher Schritte geben. Wenn wir als Zählschritt eine Zahl angegeben haben 2 , dann würde die Schleife fünfmal ausgeführt. Bei jedem Schritt der Schleife wird der Schleifenkörper geschrieben, nachdem das Wort ausgeführt wurde Tun. Im obigen Beispiel ist dies der Befehl echo, der den aktuellen Wert des Schleifenzählers anzeigt.

Sie können sich wahrscheinlich eine Situation vorstellen, in der so etwas tatsächlich erforderlich ist, normalerweise jedoch der Befehl für Wird zum Iterieren und Verarbeiten von Dateien verwendet. Es muss gesagt werden, dass in relativ einfachen Fällen die Massenverarbeitung von Dateien mithilfe von Platzhalterzeichen erfolgt. Wenn wir alle Dateien im aktuellen Verzeichnis durch die Erweiterung ersetzen möchten .htm An .html, wir geben den Befehl ein ren *.htm *.html. Wenn das Gleiche aber nicht in einem Verzeichnis, sondern in einem Verzeichnisbaum erledigt werden soll, dann kommt man nicht ohne den Befehl for aus. Die folgende Batchdatei führt diesen Vorgang für alle HTM-Dateien im Website-Unterverzeichnis des aktuellen Verzeichnisses aus. Genauer gesagt, im gesamten darin enthaltenen Verzeichnisbaum Webseite.

für /r Website %%i in (*.htm) rendern %%i %%~ni.html

Schlüssel /R zeigt an, dass das Verzeichnis durchlaufen werden muss Webseite und all sein Inneres. Wenn Sie es nicht angeben (dürfen dann aber kein Verzeichnis angeben), werden nur Dateien im aktuellen Verzeichnis verarbeitet. Der Bereich der Schleifenzählerwerte in dieser Befehlsvariante ist die Menge aller Dateien mit der Erweiterung .htm, befindet sich in einem Verzeichnis (genauer gesagt, einem Baum) Webseite. Auf den ersten Blick ein seltsamer Eintrag ~ni bedeutet das aus dem Wert der Variablen ich Sie müssen nur den Dateinamen auswählen. Die MS-DOS-Befehlssprache bietet mehrere solcher Modifikatoren, beispielsweise das Schreiben ~xi bezeichnet die Dateierweiterung. Alle Modifikatoren werden in der Befehlshilfe beschrieben für.

Der Rumpf einer Schleife kann aus mehreren in Klammern eingeschlossenen Befehlen bestehen.

für /r Website %%i in (*.htm) tun (

rem Gibt den Dateinamen aus

rem Benennen Sie die Datei um

ren %%i %%~ni.html

Übertragen der Kontrolle an eine andere Batchdatei. Aufrufbefehl

Es ist möglich, aus einer Batchdatei heraus eine weitere Batchdatei aufzurufen. Der Befehl hierfür lautet Anruf. Großartig, die in der aufrufenden Batchdatei angegebenen Variablen sind für den Angerufenen „sichtbar“. Und umgekehrt: Nachdem die aufgerufene Datei ihre Arbeit beendet und die Kontrolle an den Aufrufer zurückgegeben hat, „sieht“ dieser die Variablen, die ihm von der aufgerufenen „Vererbung“ hinterlassen wurden. Dadurch kann der Batchdateientwickler etwa Folgendes tun: Wenn mehrere Befehlsdateien dieselben Werte verwenden müssen, beispielsweise Pfade zu einigen Dateien, können diese in einer separaten Befehlsdatei abgelegt werden, die die Rolle einer Konfigurationsdatei übernimmt. Jede funktionierende Befehlsdatei beginnt mit einem Konfigurationsaufruf. Der Vorteil besteht darin, dass Sie beim Ändern von Pfaden nur Änderungen an einer Konfigurationsdatei und nicht an vielen Workern vornehmen müssen.

Batchdatei „Konfiguration“. config.bat.

rem Pfad zum Hilfedatei-Compiler

set help_compiler="c:\Programme\HTML Help Workshop\hhc.exe"

rem Pfad zum Verzeichnis, in dem sich die Hilfedateiprojekte befinden

set project_path=e:\work\projects\help-projects

„Arbeitende“ Batchdatei.

rem Einrichten von Variablen

rem Überprüfen Sie, ob der Parameter gesetzt ist

wenn nicht vorhanden %1.hpj (

rem Wenn der Parameter leer ist, zeigen wir eine Fehlermeldung an

echo Dieses Hilfedateiprojekt existiert nicht.

rem Nachfolgend finden Sie die Kompilierungsbefehle

rem Rufen Sie den Compiler auf, um ein bestimmtes Projekt zu verarbeiten.

rem, dessen Name im ersten Parameter übergeben wird

%help_compiler% %project_path%\%1.hpj

Bei der Arbeit an einem Computer besteht häufig die Notwendigkeit, dieselben DOS-Befehle zu wiederholen, um regelmäßig ausgeführte Aktionen auszuführen, eine komplexe und mehrstufige Abfolge ausführbarer Befehle oder Anwendungen zu erstellen und die Arbeit mit Anwendungen und Dateien mit oder ohne Beteiligung von zu automatisieren der Benutzer. Das Betriebssystem verfügt über die Möglichkeit, mehrere Befehle in eine Bat-Datei zu schreiben. Gleichzeitig können Sie durch einfaches Ausführen dieser Batchdatei (oft als Skript oder einfach „Batchdatei“ bezeichnet) die vorgeschriebenen Befehle ausführen und durch die Registrierung in Windows-Schedulerereignissen diesen Prozess automatisieren.

Merkmale der Dateien dieser Art ist das Fehlen jeglichen Codes im Inneren – es gibt nur Taktinformationen, die vom DOS-Befehlsprozessor gelesen und ausgeführt werden, der mit fast allen Versionen des Betriebssystems kompatibel ist Windows-Systeme. Einer von leuchtende Beispiele ist die Datei autoexec.bat, die zum Starten dieses Betriebssystems erforderlich ist, da sie beim Start die Einstellungen vornimmt.

Grundfunktionen von Batchdateien

Die in der Bat-Datei enthaltenen Befehle können je nach Funktionalität in mehrere Gruppen unterteilt werden:

Entwickelt, um einen bestimmten Wert, eine bestimmte Phrase, eine bestimmte Anwendung oder eine bestimmte Information anzuzeigen.
- um Batch-Dokumente zu starten;
- zum Arbeiten mit Zyklen;
- um eine Verzweigungsausführung mithilfe von Bedingungen zu erstellen;
- für die Arbeit mit Anwendungen.

Batchdateien ausführen

Sie können Bat-Dateien ausführen verschiedene Wege. Wenn Sie im aktuellen Verzeichnis arbeiten, können Sie einfach Dateinamen mit eingeben zusätzliche Parameter oder ohne sie. In diesem Fall werden die Befehle der Bat-Dateien nach dem Start sequentiell nacheinander ausgeführt, ohne dass der Benutzer eingreifen muss.

Wenn sich eine Befehlsdatei in einem anderen Verzeichnis befindet, müssen Sie zusätzlich zum vollständigen Namen dieser Datei den vollständigen Pfad zu dem Verzeichnis eingeben, in dem sie gespeichert ist. Die Dateierweiterung kann auch weggelassen werden. Das aktuelle Verzeichnis ist beispielsweise d:\photo\work, und die Befehlsdatei vera.bat, die mit den Parametern resize.doc und /p ausgeführt werden muss, befindet sich im Verzeichnis d:\photo\home. Damit unsere Datei dann gestartet wird, müssen Sie den Befehl d:\photo\home\vera resize.doc /p oder den Befehl ..\home\vera resize.doc /p eingeben.

Unterbrechung der Arbeit

Nach dem Start ausgeführte BAT-Dateibefehle können durch Tastenkombinationen unterbrochen werden +Und +. Auf dem Display werden Sie aufgefordert, die Befehlsdatei abzubrechen, wobei eine Eingabeaufforderung auf eine Ja- oder Nein-Eingabe wartet. Wenn Sie Y eingeben, wird die Ausführung unterbrochen und die verbleibende Befehlsliste in der bat-Datei wird ignoriert. Wenn Sie das Symbol N eingeben, wird die Ausführung mit dem nächsten Befehl aus der Liste fortgesetzt.

Aufrufen einer anderen Batchdatei

Bat-Dateien können Links zur Ausführung anderer Skripte enthalten. Wenn Sie einfach eine Batch-Datei in den Hauptteil des Skripts schreiben, werden die Befehle danach nicht mehr ausgeführt, da die Steuerung an eine andere Batch-Datei übertragen wird und die Befehle daraus ausgeführt werden. Wenn nach dem Start eine Rückgabe erforderlich ist interne Datei, dann kann es mit dem CALL-Befehl aufgerufen werden. Das Befehlsformat sieht folgendermaßen aus: CALL bat-file-name [Startparameter].

Die Parameter, die an die aufgerufene(n) Befehlsdatei(en) übergeben werden, sind normalerweise die Zeichen %1 - %9. Wenn alle Befehle der Bat-Dateien nacheinander durchlaufen werden, wird die Ausführung fortgesetzt Quellskript aus der nächsten Zeile.

Schritt-für-Schritt-Ausführung

Es gibt Zeiten, in denen Bat-Dateibefehle Schritt für Schritt ausgeführt werden müssen (mit einem Stopp nach jeder Zeile). Am häufigsten wird dieser Modus beim Debuggen oder Testen von Skripten benötigt. Der Befehl sieht folgendermaßen aus: BEFEHL /y/c Skriptname [Parameter].

Bei der Ausführung wird für jeden Befehl eine Y- oder N-Eingabeaufforderung ausgegeben. Wenn der Befehl ausgeführt werden muss, drücken Sie die Eingabetaste oder die Y-Taste. Wenn Sie den Befehl überspringen müssen, drücken Sie ESC oder N.

Befehlsausgabe auf dem Bildschirm deaktivieren oder aktivieren

Wenn eine Bat-Datei gestartet wird, werden die Befehle vor der Ausführung zeilenweise auf dem Bildschirm angezeigt und dann ausgeführt. Dies führt manchmal zu Unannehmlichkeiten, da bei einer großen Batchdatei die Befehle eine lange Liste vor dem Benutzer auf dem Bildschirm durchlaufen und manchmal müssen sie beispielsweise für Dialoge oder zum Debuggen angezeigt werden. Um Befehle in der Bat-Datei anzuzeigen, verwenden Sie den Befehl ECHO ON. Um diesen Modus zu deaktivieren, geben Sie ECHO mit dem Parameter OFF ein. In diesem Fall werden alle weiteren ausgeführten Befehle nicht mehr auf dem Bildschirm angezeigt.

Um die Ausgabe nur einer Zeile der Body-Datei auf dem Bildschirm zu deaktivieren, können Sie das @-Symbol ganz am Anfang dieser Zeile verwenden. Am häufigsten findet man dieses Symbol in Verbindung mit dem Befehl @ECHO OFF, um zu verhindern, dass es auf dem Monitor angezeigt wird. Dieser Modus wird häufig von Angreifern verwendet, die auf Basis von Bat-Dateien Viren erstellen oder Computerbenutzern kleinere und größere Probleme bereiten.

Meldungen beim Ausführen von Befehlen

Wenn nach dem ECHO-Befehl andere Zeichen als ON oder OFF stehen, werden diese in jedem Modus auf dem Bildschirm angezeigt. Wenn ECHO keine Parameter hat, zeigt es den Status des Anzeigemodus ausführbarer Befehle an – ein oder aus.

Auf Wunsch können Sie mit einer Bat-Datei sogar das (Quietsch-)Geräusch des Computers reproduzieren. Die folgenden Befehlsbeispiele basieren auf der ECHO-Anweisung mit dem Zusatz von Sonderzeichen.

Spielen Tonsignal Sie müssen ein Standardzeichen mit Code 7 anzeigen. Dies kann durch Drücken der Taste erfolgen und „7“ auf dem Ziffernblock (mit der Aufschrift „home“).

Um die Lesbarkeit von Nachrichten zu verbessern, können Sie den ECHO-Befehl mit dem Parameter „.“ verwenden. (wird direkt nach dem Befehl ohne Leerzeichen platziert) oder ein Sonderzeichen mit Code 255. Auf dem Bildschirm sieht es wie eine leere Zeile aus.

Mit dem ECHO-Befehl können Nachrichten in eine separate Datei ausgegeben werden. Sein Kern besteht darin, die Nachrichtenausgabe in eine Datei und nicht auf den Bildschirm umzuleiten. Zum Speichern von Protokollen, Abfragen und Aufzeichnen von Ereignissen können Sie bat verwenden. Die Ausgabebefehle haben das folgende Format:

ECHO-Nachricht >> Dateiname – der Befehl fügt eine Zeile am Ende einer vorhandenen Datei hinzu. Wenn in diesem Verzeichnis keine solche Datei vorhanden ist, wird eine neue Datei erstellt.

ECHO-Nachricht > Dateiname – dieser Befehl erstellt eine neue Datei und schreibt die aktuelle Zeile hinein. Wenn eine solche Datei im aktuellen Verzeichnis vorhanden ist, wird ihr Inhalt gelöscht und der Befehl bzw. sein Ergebnis wird aufgeschrieben.

Kommentare verwenden

Zur einfacheren Bearbeitung von Skripten wird der REM-Befehl verwendet. Windows ignoriert bei der Ausführung alle folgenden Bat-Dateibefehle. Sie sind im Bearbeitungs- und Schritt-für-Schritt-Modus sichtbar. In allen anderen Fällen werden Kommentare nicht auf dem Bildschirm angezeigt.

Verzögerungsbefehl in der Bat-Datei

Manchmal ist es während der Ausführung einer Batchdatei erforderlich, die Ausführung von Befehlen vorübergehend anzuhalten, um beispielsweise auf eine Benutzerantwort zu warten, die Zeit zum Lesen einer langen Nachricht zu verlängern, einen Datenträger einzulegen oder das Vorhandensein einer Datei zu bestätigen Benutzer oder zum Debuggen einer Batchdatei. Der Verzögerungsbefehl in der Bat-Datei wird als PAUSE ohne Parameter geschrieben. In diesem Fall erscheint eine Meldung wie „Drücken Sie eine beliebige Taste, um fortzufahren“ auf dem Display und die Skriptausführung wird angehalten, bis eine Tastaturtaste gedrückt wird. Wenn die Kombination gedrückt wird +oder +, dann erkennt das System dies als Abschluss der ausführbaren Datei und sendet eine Anfrage zur Bestätigung des Abschlusses seiner Arbeit: „Ausführung der Batch-Datei abbrechen? (J/N).“ Wenn Sie die Y-Taste drücken, wird das Skript an dieser Stelle unterbrochen und alle verbleibenden nicht ausgeführten Befehle werden ignoriert. Durch Drücken von N wird die Ausführung mit dem nächsten Befehl fortgesetzt. Wenn Sie eine Pause einlegen, können Sie durch Drücken einer beliebigen anderen alphanumerischen Taste sowie der Leertaste und der Eingabetaste die Ausführung der ausführbaren Datei mit dem nächsten Befehl fortsetzen.

Dateiliste

Um mehrere Dateien aus der Liste, die sich im selben Verzeichnis befinden, nacheinander auszuführen, können Sie auch eine Bat-Datei verwenden. Die Befehle „Programm nach Name ausführen“ und „Programm nach Dateierweiterung ausführen“ können häufig dabei helfen, die Dokumentenverarbeitung zu automatisieren, beispielsweise das Sortieren von E-Mail-Anhängen. Sie unterscheiden sich in den Parametern für den FOR-Befehl. Das Format zum Schreiben ist unten angegeben:

FOR %x IN (Dateiliste) DO-Befehl, wobei:

X – jedes Symbol, außer Zahlen von 0 bis 9;

Liste – durch Leerzeichen getrennte Dateinamen oder der Name einer einzelnen Datei; In diesem Fall können Sie die Sonderzeichen „?“ verwenden. und „*“, um ein oder mehrere Zeichen in Dateinamen zu ersetzen;

Befehl – ​​jeder DOS-Befehl oder jedes DOS-Programm, außer FOR; Wenn FOR verwendet werden muss, müssen Sie anstelle von %x %%x angeben.

Wenn Sie diesen Befehl zum Schreiben von Bat-Dateien verwenden, müssen Sie berücksichtigen, dass Namen in Programmen im DOS-Format eine Begrenzung der Namenslänge haben. Um den FOR-Befehl auf die Arbeit mit langen Dateinamen umzustellen, müssen Sie daran denken, den Befehl LFNFOR ON davor auszuführen, um den Modus zum Arbeiten mit langen Namen zu aktivieren, und LFNFOR OFF, um ihn zu deaktivieren und zur Standarddateilänge zurückzukehren.

Viele Funktionen mit Programmen, z. B. Vergleichen von Dateien mit bestimmten Erweiterungstypen in einem Verzeichnis mit Dateien desselben Typs aus einem anderen Verzeichnis, Kopieren aller Dateien des aktuellen Verzeichnisses in ein anderes, sequentielle Ausführung von Dateien mit Erweiterungen eines bestimmten Typs und bestimmter Namen Das Beginnen mit Zahlen kann mit nur einem in der Bat-Datei geschriebenen Befehl erfolgen. Der Programmstart kann mit Benutzeranfragen kombiniert werden, was die Arbeit mit Daten komfortabler macht.

Übergänge in Bat-Dateien

Um die Verwaltung der Reihenfolge, in der Befehle in Bat-Dateien gestartet werden, zu vereinfachen, verwenden sie häufig Sprungbefehle und Beschriftungen, mit denen diese Sprünge ausgeführt werden.
Eine Bezeichnung ist eine beliebige Zeile in einer ausführbaren Datei, die mit einem Doppelpunkt beginnt. Der Markenname ist die Zeichenmenge nach dem Doppelpunkt bis zum Ende der Zeile bzw. bis zum ersten Leerzeichen, danach wird der Rest der Zeile ignoriert und kann als Kommentar für die Sprungmarke verwendet werden.

Der Sprungbefehl wird als GOTO geschrieben, wobei der Name des Labels durch ein Leerzeichen getrennt wird. Wenn kein Parameter vorhanden ist oder der Labelname nicht in der Befehlsdatei gefunden wird, stoppt das Skript die Ausführung dieses Befehls. Beispiel:

REM (erforderliche Befehle werden ausgeführt).

In diesem Beispiel springt die sequentielle Ausführung der Befehlsdatei beim Erreichen von GOTO zzz zu label:zzz und fährt mit REM fort, wobei alles zwischen dem Sprungbefehl und dem angegebenen Label ignoriert wird.

Verwenden von Bedingungen beim Arbeiten mit Bat-Dateien

Eine Bat-Datei kann abhängig von verschiedenen Bedingungen Befehle ausführen oder auch nicht, wenn sie die IF-Ereignisprüfung verwendet. Das Format dieses Befehls ist „IF-Bedingungsbefehl“.

Die Bedingung repräsentiert verschiedene Varianten von Ausdrücken:

ERRORLEVEL-Zahl – Wenn das zuvor laufende Programm mit einem Exit-Code beendet wurde, der gleich oder größer als der angegebene numerische Wert ist, ist die Bedingung wahr.

ZEILE 1 == ZEILE 2 – wenn die Zeilen vollständig übereinstimmen, wird die Bedingung wahr. Anstelle von Zeichenfolgen können Sie die Zeichen %0 - %9 ersetzen, dann werden die Parameter der Batchdatei verglichen.

EXIST – Dateiname – wenn die angegebene Datei existiert, ist die Bedingung wahr.

NOT – Bedingung – wenn die angegebene Bedingung falsch ist, erhält die Befehlsausgabe einen wahren Wert.

Verwendete Befehle in Bat-Dateien

Wenn Sie auf die Schaltfläche „Start“ klicken und die Befehlszeile (cmd) starten, können Sie alles sehen, was in die Bat-Datei eingefügt wurde; Sie können sie als Debugging-Tool, als Assistent, als Programm zum Abrufen von Informationen über Befehle verwenden. Dazu können Sie einfach HELP eingeben. Dadurch wird eine Liste der Befehle mit kurzen Beschreibungen erstellt. Um detailliertere Informationen zu erhalten, können Sie HELP mit dem Namen des gewünschten Befehls eingeben.

Verwendung von Bat-Dateien beim Sichern von Daten

Batchdateien erleichtern Systemadministratoren die tägliche Arbeit erheblich. Die häufigsten Anwendungsgebiete sind das Erstellen, Löschen, Umbenennen und vieles mehr. All dies basiert auf der Verwendung des Befehls COPY bat file. Sie können beispielsweise ein Programm erstellen, das Archivkopien von Dokumenten aus einem ausgewählten Ordner mit Benutzerdaten bestimmter Formate erstellt, beispielsweise große Mediendateien ausschließt, ein Backup in einem Ordner mit dem Benutzernamen bereitstellt und ihn „Command_copying_files.bat“ nennt “. Danach muss mithilfe des integrierten Zeitplaners oder durch das Programm selbst sichergestellt werden, dass es zu einem bestimmten Zeitpunkt startet, und so die Sicherheit der Benutzerdaten gewährleistet werden.

In diesem Artikel werden wir uns mit einer so nützlichen Sache befassen wie „ Batchdatei" Lassen Sie uns zunächst definieren, was eine Bat-Datei ist. Batch- oder Batch-Dateien sind einfache Textdateien, die Befehlssätze enthalten ( Anweisungen)-Interpreter und mit der Erweiterung bat oder cmd ( cmd funktioniert nur in Betriebssystemen der NT-Familie). Sie können solche Dateien mit einem normalen Notizblock oder einem anderen Texteditor erstellen und bearbeiten.

Nun fragen Sie sich vielleicht: Warum müssen Sie in der Lage sein, solche Bat-Dateien zu schreiben? Und warum werden sie benötigt? Ich werde versuchen, es zu erklären.

Sie dienen einerseits der Arbeitserleichterung, d.h. Sie müssen beispielsweise jeden Tag ständig einen Vorgang ausführen ( Erstellen Sie beispielsweise ein Archiv bestimmter Dokumente), mit Hilfe einer Body-Datei, kann dies automatisiert werden, und Sie nehmen nicht mehr daran teil.

Zweitens sind diese Batchdateien sehr leistungsfähig ( wenn Sie natürlich wissen, wie man sie schreibt), d.h. Sie können sogar ein gutes Programm schreiben ( Ich meine im Hinblick auf die Funktionalität). Persönlich helfen sie mir sehr bei meiner Arbeit und ich habe einige Dinge einfach vergessen, als ich es manuell erledigt habe.

Kommen wir nun direkt zu den Grundlagen dieser Batchdateien. Wie werden sie erstellt? Sie müssen lediglich ein einfaches Textdokument erstellen, es öffnen und sofort zur Registerkarte „ wechseln Datei->Speichern unter", geben Sie anstelle der Erweiterung " ein Textdokument.txt", Zum Beispiel " Textdokument.bat" und speichern, sodass wir eine Batchdatei mit der Erweiterung .bat erhalten, die jedoch noch nichts bewirkt.

Zunächst gebe ich ein Beispiel für eine Batchdatei, die ich bei meiner Arbeit zum Archivieren von Dokumenten verwende.

„C:\Programme\WinRAR\winrar.exe“ a -r -dh -ed -agYYYY-mm-dd E:\arhaccounts\ d:\accounts\*.doc „C:\Programme\WinRAR\winrar. exe“ a -r -dh -ed -agYYYY-mm-dd E:\arhaccounts\ d:\accounts\*.xls „C:\Program Files\WinRAR\winrar.exe“ a -r -dh -ed -agYYYY -mm-dd E:\arhaccounts\ d:\accounts\*.txt

Jetzt erzähle ich Ihnen ein wenig darüber, was diese Batchdatei bewirkt. WinRar startet, dann folgen Winrar-Befehle:

  • a – dies dient zum Hinzufügen zum Archiv;
  • -r – Unterordner verarbeiten;
  • -dh – freigegebene Dateien öffnen;
  • -ed – keine leeren Ordner hinzufügen;
  • JJJJ-MM-TT – das aktuelle Datum zum Archivnamen hinzufügen ( Datumsformat);
  • E:\arhaaccounts\ – Pfad, in dem sich das endgültige Archiv befindet;
  • d:\accounts\*.doc – Pfad und Maske der Dateien, die archiviert werden müssen.

In diesem Fall archivieren wir alle Word-, Excel- und Textdateien, den Rest müssen wir nicht archivieren. Unsere Archivierung erfolgt auf einer anderen Festplatte und wir kopieren das resultierende Archiv auch auf einen anderen Computer, sodass die Archive in einem anderen Büro gespeichert werden. Das Kopieren erfolgt über das Netzwerk, daher muss der Computer, auf den das Archiv kopiert wird, eingeschaltet sein. Dazu können Sie den folgenden Befehl verwenden:

Kopieren Sie E:\arhaccounts\*.rar \\namecomp\arhiv\

Beispiele für Befehle für Bat-Dateien

Schauen wir uns nun die grundlegenden Befehle an, die Sie verwenden können.

Wenn Sie eine Datei löschen müssen, schreiben Sie Folgendes:

Del d:\file\test.doc


Um das gesamte Verzeichnis zu löschen, schreiben Sie:

Rd d:\file\

Wenn Sie jedes Mal alles aus einem Verzeichnis löschen müssen, verwenden Sie Folgendes:

Echo Y| del d:\file\

  • del d:\file\ – das ist genau das Löschen aller Dateien;
  • echo Y| - Der Befehl bestätigt den Löschvorgang, weil Wenn Sie diesen Befehl nicht eingeben, wird eine Meldung angezeigt, die den Löschvorgang bestätigt: „Weiter“, und Sie müssen diese Frage jedes Mal beantworten.

Schauen wir uns nun ein komplizierteres Beispiel an, bei dem die Bedingung bereits erfüllt ist:

@echo off "C:\Program Files\WinRAR\winrar.exe" x -O+ -IBCK d:\test\test.rar d:\test IF not EXIST d:\test\123.rar GOTO 1 IF EXIST d: \test\123.rar GOTO 2:2 „C:\Programme\WinRAR\winrar.exe“ x -O+ -IBCK d:\test\123.rar c:\ del d:\test\123.rar:1 del d:\test\test.rar Ende

Jetzt erkläre ich es. Nehmen wir an, Sie müssen das test.rar-Archiv entpacken, das viele Dateien enthält. Wenn sich dort jedoch eine 123.rar-Datei befindet, muss diese in das Stammverzeichnis von Laufwerk C entpackt werden Die restlichen Dateien bleiben unberührt im selben Verzeichnis.

Damit nichts auf dem Bildschirm reflektiert wird, ist der Befehl @echo off erforderlich ( Wenn Sie dies nicht benötigen, können Sie grundsätzlich darauf verzichten, diese Zeile zu schreiben). Als nächstes starten wir Winrar und entpacken das test.rar-Archiv in den Testordner. Dann kommt die Bedingung if im Testordner ( nach dem Entpacken von test.rar) Wir haben die Datei 123.rar nicht, dann führen wir einfach die Batch-Datei aus und gehen zu Zeile: 1 und löschen dann einfach die Datei test.rar, da dies nicht erforderlich ist Wir haben bereits alles ausgepackt, was wir brauchen. Wenn dort jedoch eine Datei 123.rar vorhanden ist, geht die Ausführung der Batchdatei zu Zeile: 2, woraufhin die Datei 123.rar bereits in das Stammverzeichnis von Laufwerk C entpackt wird. Mit anderen Worten, wir haben die Bedingung erfüllt Wenn eine Datei vorhanden ist, führen Sie dies aus. Wenn keine Datei vorhanden ist, führen Sie dies aus. Nehmen wir an, wenn wir die Bedingung in diesem Beispiel nicht angeben, gibt unsere Batchdatei einen Fehler aus, wenn wir die Datei 123.rar nicht in diesem Ordner haben.

Schauen wir uns nun dieses Beispiel an. Nehmen wir an, Sie müssen jedes Mal Dateien aus einem Verzeichnis auf Laufwerk D auf ein Flash-Laufwerk verschieben. Jedes Mal müssen Sie zu Laufwerk D meines Computers gehen, den gewünschten Ordner auswählen, alle Dateien daraus auswählen und ausschneiden und dann einfach zum Flash-Laufwerk gehen und sie einfügen. Mit Hilfe einer Body-Datei ist dies mit einem Klick erledigt ( mit einer Bedingung, dass das Flash-Laufwerk jedes Mal zum Beispiel die Festplatte G oder was auch immer Sie haben, sein wird). Hier ist ein Beispiel für eine solche Batchdatei:

Verschieben Sie „D:\catalog\*.doc“ nach G:\catalognaflehe\

Und alle Dateien mit der Erweiterung doc, die sich im Verzeichnis D:\catalog befinden, werden auf das Flash-Laufwerk verschoben. Jetzt möchte ich sagen, dass Sie Skripte in Batchdateien verwenden können ( Skripte) mithilfe von Windows Scripting Host und bei Bedarf, um beispielsweise nach dem Kopieren von Dateien eine Meldung anzuzeigen ( vorheriges Beispiel) Fügen Sie Folgendes ein:

Echo var WSHShell = WScript.CreateObject("WScript.Shell"); > %temp%\mes.js echo WSHShell.Popup("Files Copied"); >> %temp%\mes.js start %temp%\mes.js deltree /y %temp%\mes.js

Tatsächlich kann man viel über das Schreiben von Textdateien reden und das lässt sich natürlich nicht in einen Artikel packen; hier habe ich nur die Prinzipien gezeigt, die beim Schreiben verwendet werden bat-Dateien, sozusagen die Basis. Wenn Sie weitere Befehle zum Schreiben von Batchdateien erfahren möchten, können Sie diese einfach anzeigen, indem Sie Folgendes eingeben ( Start – Ausführen – cmd) den Hilfebefehl, aber natürlich gibt es nicht alle Befehle, die in Batchdateien verwendet werden können. Viel Glück beim Schreiben von BAT-Dateien ( Body-Shirts).

Fortsetzung des Themas im Artikel -

Jetzt ist es an der Zeit, darüber nachzudenken Fledermaus-Befehle. Grundsätzlich werden hier Befehle verwendet, die in cmd eingegeben werden, es gibt jedoch auch einige, deren Verwendung auf der Befehlszeile keinen Sinn ergibt.

So erhalten Sie eine vollständige Liste der Fledermausbefehle

Um alle Befehle zu beschreiben, müssen Sie eine ganze Reihe von Artikeln schreiben. Um Sie nicht zu überfordern, beschränken wir uns auf einen Artikel und berücksichtigen kompakte Informationen. Wie Sie wissen, sind die Befehle bat file und cmd identisch, um eine Liste davon zu erhalten oder . Geben Sie den Hilfebefehl ein, der auf Englisch als Hilfe geschrieben ist, und drücken Sie die Eingabetaste. Dadurch schreibt der Computer alle Befehle in die cmd-Schnittstelle mit kurze Beschreibung.

Nachdem Sie diese Liste durchgesehen haben, möchten Sie vielleicht genauer herausfinden, was ein bestimmter Fledermausbefehl ist. Wählen wir zum Beispiel den for-Befehl aus. Um ihn zu beschreiben, geben wir help for oder for /? ein. und klicken Sie auf Enter. Als Ergebnis erhalten Sie eine Online-Hilfe für den Befehl; diese ist umfangreich, so dass Sie mehrmals eine beliebige Taste drücken müssen, um die nachfolgende Beschreibung zu lesen. Auf diese Weise können Sie die Syntax eines bestimmten Befehls lernen.

bat-Dateibefehle

Machen wir uns nun mit einer kurzen Beschreibung mit den in der Batchdatei verwendeten Befehlen vertraut. Dabei wird die Groß- und Kleinschreibung nicht beachtet, wir haben sie jedoch zur leichteren Identifizierung in Großbuchstaben aufgeführt.

@ Alle von der Fledermaus ausgeführten Befehle werden auf dem Bildschirm angezeigt. Um unnötige Dinge zu entfernen, wird ein „Hund“ vor dem Befehl platziert. Wird oft verwendet, wenn @echo ausgeschaltet ist.
SatzLegt Variablen fest. Beispielsweise weist hier setper=c:\windows den Pfad zu. Sie können einen umständlichen Wert in eine Variable schreiben und ihn im Skript angeben, wodurch der Code kompakter wird. Wenn sich der Inhalt ändert, müssen Sie die Werte nicht überall dort ändern, wo diese Variable bereitgestellt wird.
:: Eine von zwei Methoden zum Kommentieren in einer Bat-Datei, ohne diese Zeile auf dem Bildschirm anzuzeigen.
:ETIKETTWenn Sie einem Wort einen Doppelpunkt hinzufügen, wird eine Beschriftung erstellt, die es Ihnen ermöglicht, zu verschiedenen Abschnitten der Textdatei zu springen. Ein Label kann einen anderen Namen haben, LABEL ist ein Beispiel.
ANRUFBat ist ein Befehl, der eine Batchdatei innerhalb einer anderen aufruft. Alle in einer der Dateien beschriebenen Parameter können untereinander vererbt werden.
AUSWAHLBefehl auswählen.
CLSLöscht den Inhalt der Shell, die über dem CLS angezeigt wird.
ECHOZeigt eine Meldung auf dem Bildschirm an. Zum Beispiel „ECHO Hallo!“ zeigt „Hallo!“ an. Wenn Sie @ECHO nicht zu Beginn verwenden, deaktivieren Sie es Batchdatei, dann sehen Sie den Pfad zur bat-Datei und zwei Meldungen, was unnötig ist. Sie können eine leere Zeile erstellen, indem Sie ECHO eingeben. mit einem Punkt am Ende.
AUSFAHRTBeendet das aktuelle Batch-Skript.
GOTO ETIKETTWird verwendet, um zu einem bestimmten Label, in diesem Fall LABEL, zu springen und das Skript danach auszuführen.
WENNWie in den Fledermaus-Programmiersprachen stellt der if-Befehl die Erfüllung einer Bedingung dar, je nachdem, welchen Weg das Skript einschlägt. Die Syntax entnehmen Sie bitte der Hilfe.
fürEine Schleife, mit der die Ausführung derselben Aktionen organisiert wird.
PAUSEWenn Sie die Ausgabe eines Skripts sehen möchten, dieses ausgeführt wird und das Fenster schnell geschlossen wird, verwenden Sie PAUSE. Dadurch können Sie das Ergebnis anzeigen und das Skript durch Drücken einer beliebigen Taste abschließen.
R.E.M.Zweiter Weg zum Kommentieren. „Anders::“ wird auf dem Bildschirm ausgegeben, wenn kein @ECHO-off-Konstrukt vorhanden ist.
SCHICHTÄndert die Position von Batch-Parametern in der Bat-Datei.
STARTStartet Programme, Fenster usw. Hat viele Attribute (siehe Hilfe).

Dies ist die Grundlage der Fledermauskommandos. Die Syntax einiger Elemente ist für Anfänger schwierig und erfordert bestimmte Kenntnisse. Alle bat-Dateibefehle, die oben beschrieben wurden, werden oberflächlich betrachtet, um ihren Zweck herauszufinden. Die vollständige Syntax finden Sie in der Windows-Hilfe.

Viele technische Redakteure haben von Zeit zu Zeit den Bedarf, die Dateiverarbeitung zu automatisieren. Es war einmal wir reden überüber die einmalige Verarbeitung einer großen Anzahl von Dateien, einmal über die systematische Durchführung derselben Aktionen, beispielsweise bei der Verwendung von DocBook- oder DITA-Technologien). Die Verarbeitung jeder Datei mit einem separaten manuellen Befehl nimmt nicht nur Zeit in Anspruch, sondern führt auch zu schwer zu identifizierenden Fehlern, die auf die natürliche Unaufmerksamkeit des Bedieners zurückzuführen sind.

Im MS-DOS-Betriebssystem und in allen Betriebssystemen der Familie Microsoft Windows Die einfachste Möglichkeit, die Verarbeitung von Dateien (und Verzeichnissen) zu automatisieren, sind sogenannte Batch-Dateien. Nehmen wir gleich an, dass Batchdateien nicht die einzigen Mittel zur Automatisierung der Arbeit des Benutzers sind, auch nicht unter den integrierten. In Betriebssystemen der Microsoft Windows-Familie ist dies ab Version 98 der Fall mehr Windows Script(ing)Host. Darüber hinaus verbietet uns niemand, für diese Zwecke eine interpretierte Sprache zu verwenden, beispielsweise Perl, Python oder Ruby. Allerdings erfordern die aufgeführten Tools, obwohl sie leistungsstark sind, Programmierkenntnisse, d. h. Programme verfassen und, was noch wichtiger ist, debuggen, zumindest auf einem guten Amateurniveau. Die Verwendung von Batch-Dateien ist für jedermann ohne besondere Schulung zugänglich; Aufmerksamkeit und gesunder Menschenverstand genügen.

Wichtiger Hinweis. Ein vollständiges Nachschlagewerk oder sogar ein gut geschriebenes Lehrbuch über MS-DOS-Befehle und die Entwicklung von Befehlsdateien müsste die zahlreichen Nuancen beschreiben, die mit der Verwendung verschiedener Parameter verbunden sind, und die Besonderheiten der Funktionsweise von Befehlsdateien verschiedene Versionen Microsoft Windows usw. usw. Dieser Artikel erhebt keinen Anspruch auf Vollständigkeit, insbesondere:

  • wir werden es nicht beschreiben verschiedene Wege das gleiche Ergebnis erzielen;
  • Wir werden nicht alle Möglichkeiten und Verwendungen der genannten Befehle beschreiben.

Jetzt besteht unsere Aufgabe darin, denjenigen zu helfen, die mit diesem Tool völlig oder fast nicht vertraut sind, mit dem Mastern von Batchdateien zu beginnen. Alle Einzelheiten können Sie dann in Firmenunterlagen oder Fachbüchern nachlesen.

Befehlsprozessor

Viele Betriebssysteme, darunter auch die von Microsoft, enthalten einen Befehlsprozessor. Dies ist der Name eines Programms, das als Reaktion auf vom Benutzer über die Tastatur eingegebene Befehle die Ausführung verschiedener Aktionen initiiert. Im Wesentlichen bestehen diese Aktionen darin, die erforderlichen Programme mit bestimmten Parametern zu starten. Aber nicht nur; Wir werden später sehen, dass einige Befehle direkt vom Befehlsprozessor ausgeführt werden. Im Grunde handelt es sich dabei um Befehle, die dazu dienen, den Kontext und die Reihenfolge der Befehlsausführung zu steuern. Allerdings werden wir nicht zu tief über die Natur von Befehlen nachdenken, zumindest nicht, wenn wir es müssen. Noch wichtiger ist, dass jedes Programm, das technisch über die Befehlszeile ausgeführt werden kann, vom Befehlsprozessor als Befehl betrachtet wird. Es wird nicht zwischen den nativen Befehlen, die ursprünglich in das Betriebssystem integriert waren, und Programmen, die darauf installiert wurden, unterschieden.

So starten Sie den Befehlsprozessor:

  1. Klicken Sie auf die Schaltfläche Start. Das Hauptmenü wird auf dem Bildschirm angezeigt.
  2. Wählen Sie im Hauptmenü „Ausführen“ aus. Auf dem Bildschirm erscheint ein Dialogfeld Starten des Programms.
  3. Geben Sie im Feld „Öffnen“ die Zeichenfolge ein cmd.
  4. Klicken Sie auf die Schaltfläche OK. Auf dem Bildschirm erscheint ein Befehlsprozessorfenster.

Befehlszeile und Befehle

Das Befehlsprozessorfenster sieht in seiner ursprünglichen Form düster aus und die Arbeit damit ist für die meisten Menschen nicht sehr bequem. Es ist viel einfacher, Dateimanager im Norton Commander-Stil zu verwenden. Sie bieten sowohl Tools zum schnellen Navigieren im Dateisystem als auch das Timing für die Befehlseingabe.

So geben Sie den Befehl ein:

  1. Geben Sie den Befehlstext in die Befehlszeile ein.
  2. Drücken Sie die Taste Eingeben.

Die Befehle des Befehlsprozessors und des Betriebssystems sind in deren Betriebsdokumentation beschrieben. Diese Dokumentation ist teilweise im Betriebssystem selbst enthalten. Um darauf zuzugreifen, verwenden Sie den Befehl helfen. Dieser Befehl zeigt eine Liste der verfügbaren Befehle an. Um eine Beschreibung eines bestimmten Befehls zu erhalten, verwenden Sie den Befehl als Parameter helfen Ihr Name sollte angegeben werden. Die in der folgenden Auflistung gezeigte Befehlszeile zeigt eine Beschreibung des Befehls an für.

Hilfe für

Wenn Sie versucht haben, den Befehl einzugeben helfen, ist Ihnen wahrscheinlich aufgefallen, dass das Ergebnis seiner Arbeit (die sogenannte Ausgabe) nicht auf einen Bildschirm passt. Das gleiche Problem tritt mit dem Befehlsbeschreibungstext auf für. Die gute Nachricht ist, dass die Ausgabe in eine Datei umgeleitet werden kann. Die in der folgenden Auflistung gezeigte Befehlszeile generiert die Datei commands.txt, enthält eine Liste aller MS-DOS-Befehle.

Hilfe > commands.txt

Um eine Datei mit einer Beschreibung des Befehls zu generieren für, müssen Sie den folgenden Befehl eingeben (Sie können der Ausgabedatei einen beliebigen Namen geben).

Hilfe für > for.txt

Insgesamt gibt es in modernen Microsoft-Betriebssystemen etwas weniger als 80 Befehle, und es ist unmöglich, sie in einem Artikel zu beschreiben. Hier können wir nur einige Befehle erwähnen, die zur Automatisierung der Dateiverarbeitung nützlich sind, und zeigen, wie man sie verwendet. Diese Befehle werden in weiteren Beispielen verwendet. Sie können die Details jederzeit per Befehl klären helfen oder im Verzeichnis.

Kopieren— Kopieren einer oder mehrerer Dateien;

del— Löschen einer oder mehrerer Dateien;

bewegen— Verschieben einer oder mehrerer Dateien oder Verzeichnisse;

umbenennen(abgekürzt ren) – eine oder mehrere Dateien oder Verzeichnisse umbenennen;

xcopy— Kopieren des Unterverzeichnisbaums;

mkdir(abgekürzt md) – Erstellen eines Verzeichnisses;

rmdir(abgekürzt rd) – Löschen eines Verzeichnisses.

Eine der allgemeinen Regeln der MS-DOS-Befehlssyntax besteht darin, dass bei der Angabe von Parametern zuerst die Quelle und dann das Ergebnis angegeben werden. Zum Beispiel, wenn wir eine Datei verschieben möchten bier.txt aus dem Katalog Kasten zum Katalog Tisch, müssen wir den im folgenden Listing angegebenen Befehl eingeben.

Verschieben Sie die Tabelle box\beer.txt

Zuerst, was umgezogen werden soll, dann wohin.

Wenn wir die Datei umbenennen möchten lena.txt einordnen natasha.txt, dann sollte der Befehl wie unten gezeigt geschrieben werden.

Ren lena.txt natasha.txt

Zuerst, was umbenannt werden soll, dann was umbenannt werden soll.

Aktuelles Verzeichnis. Absolute und relative Pfade

Beim Arbeiten mit Dateibefehlen ist das Konzept des aktuellen Verzeichnisses äußerst wichtig. Tatsache ist, dass wir bei der Angabe einer Datei als Befehlsparameter immer einen von zwei verwenden mögliche Wege Hinweise darauf: entweder ein absoluter Pfad oder ein relativer Pfad. Im vollständigen Pfad geben wir beispielsweise alles an, beginnend mit dem Laufwerk (oder dem Netzwerknamen des Computers). d:\misha\box\beer.txt. Welches Verzeichnis auch immer gerade aktuell ist, wenn der Befehl eingegeben wird, der vollständige Pfad entspricht derselben Datei. Bei einem relativen Pfad dient das aktuelle Verzeichnis als Ausgangspunkt. Der einfachste Fall eines relativen Pfads ist ein Dateiname. Im Kontext der Befehlsausführung bedeutet dies eine Datei mit diesem Namen, die sich im aktuellen Verzeichnis befindet.

Um einen relativen Pfad zum aktuellen Verzeichnis zu schreiben, gibt es einen bedingten Eintrag . (Punkt). Um den relativen Pfad zu dem Verzeichnis aufzuzeichnen, das das aktuelle Verzeichnis enthält, gibt es eine bedingte Notation .. (zwei Punkte). Der in der folgenden Auflistung gezeigte Befehl kopiert alle Dateien aus dem aktuellen Verzeichnis in das Verzeichnis Nachbar, daneben gelegen.

Kopieren Sie *.* .\neighbor

Batch-Dateien

Bisher gingen wir bei der Nennung von Beispielen davon aus, dass wir Befehle jedes Mal manuell eingeben würden. Bei der Verarbeitung einer großen Anzahl von Dateien oder der systematischen Ausführung derselben Befehle wird dies umständlich. Daher bietet der Befehlsprozessor die Möglichkeit, Befehlsdateien auszuführen. Eine Batchdatei ist eine Textdatei, in die Befehle (oder mindestens ein Befehl) eingegeben werden. Eine Beispiel-Batchdatei ist in der folgenden Auflistung dargestellt. Versuchen Sie zu erraten, was diese Batchdatei bewirkt.

Hilfe kopieren > copy.help help move > move.help md msdos-help move *.help msdos-help

Wenn Ihnen der Zweck dieser Datei unbekannt bleibt, versuchen Sie, sie tatsächlich zu erstellen und auszuführen. Es ist üblich, Befehlsdateien die Erweiterung zu geben Schläger. Dadurch werden Dateien dieses Typs vom Befehlsprozessor erkannt. Diese Datei kann zum Beispiel heißen: make-help.bat.

So führen Sie die Batchdatei aus:

  1. Geben Sie seinen Namen als Befehl ein. Anschließend wird die Batchdatei ausgeführt.

In einer Batchdatei nimmt jeder Befehl eine Zeile ein. Genauer gesagt gibt es eine Möglichkeit, einen Befehl in mehreren aufeinanderfolgenden Zeilen zu platzieren; dazu sollten Sie unmittelbar vor jedem Zeilenumbruch das „Cap“-Symbol setzen ^ . (Jedes Großbuchstaben muss das letzte Zeichen in seiner Zeile sein; es dürfen keine Leerzeichen oder Tabulatoren dahinter stehen.) Ein Beispiel für einen solchen Befehl ist in der folgenden Auflistung dargestellt.

Wenn disser.txt vorhanden ist, kopieren Sie disser.txt ^ d:\science\papers\drafts\sources

Aber der Einfachheit halber, um nicht jedes Mal Vorbehalte zu machen, gehen wir davon aus, dass es sich gewissermaßen um eine lange „logische“ Zeile handelt.

Wenn eine Batchdatei ausgeführt wird, durchsucht der Befehlsprozessor sie von oben nach unten, von der ersten bis zur letzten Zeile, und führt die Befehle in der Reihenfolge aus, in der sie auf sie stoßen. Im Allgemeinen werden sie so ausgeführt, als ob wir sie manuell eingegeben hätten. Im Allgemeinen verhalten sich einige Befehle etwas anders, wenn sie manuell eingegeben werden und wenn sie aus einer Batchdatei ausgeführt werden.

Nehmen wir für die Zukunft an, dass die Reihenfolge der Befehlsausführung bei Bedarf mithilfe von Steuerbefehlen geändert werden kann (was eine solche Notwendigkeit verursachen kann, ist eine separate Frage).

Verwechseln Sie das aktuelle Verzeichnis nicht mit dem Verzeichnis, in dem sich die zu startende Batchdatei befindet. Nehmen wir an, das aktuelle Verzeichnis ist arbeiten, es enthält ein Verzeichnis Werkzeuge, und im Tools-Verzeichnis werden Batchdateien gespeichert. Eine davon führen Sie mit dem Befehl aus tools\collect-images.bat. „Aus Sicht“ dieser Befehlsdatei wird es also immer noch das aktuelle Verzeichnis sein arbeiten, und nicht Werkzeuge.

Kommentieren der Batchdatei und ihrer Ausgabe. echo- und rem-Befehle

Eine Batchdatei ist im Wesentlichen ein Programm, das in der Befehlsprozessorsprache des Betriebssystems geschrieben ist. Der Text des Programms sollte mit Kommentaren versehen sein, damit Sie sich bei späterer Rückkehr nicht mühsam daran erinnern müssen, warum dieses Programm benötigt wird und wie es funktioniert.

Das MS-DOS-Befehlssystem bietet einen Befehl zum Erstellen von Kommentaren: rem. Dies ist ein Dummy-Befehl, der keine Aktionen erfordert, Ihnen aber das Schreiben eines beliebigen Textes in die Zeile nach Ihrem Namen ermöglicht. Darüber hinaus erkennt der Befehlsprozessor dies nicht als Syntaxfehler. Ein Beispiel für die Formatierung einer Befehlsdatei mit Kommentaren ist in der folgenden Auflistung dargestellt.

Rem *************************************************** **** rem Generieren von Hilfedateien mit den Kopier- und Verschiebebefehlen rem *********************************** * ***************** rem Erstellen Sie Hilfedateien. help copy > copy.help help move > move.help rem. Erstellen Sie ein Verzeichnis zum Speichern von Hilfedateien. md msdos-help rem. Verschieben Sie Hilfedateien Verschieben Sie *.help msdos-help in das vorbereitete Verzeichnis

Beachten Sie die Leerzeilen, die die Batchdatei in „Absätze“ unterteilen. Mit diesem einfachen Trick können Sie Ihre Batchdatei besser lesbar machen.

Wenn Sie die obige Batchdatei ausführen, werden alle Befehle während der Ausführung auf dem Bildschirm angezeigt, was nicht immer praktisch ist. Die Befehlsausgabe kann mit dem Befehl deaktiviert werden @echo aus. Das „Hund“-Symbol vor dem Befehl Echo Dies bedeutet, dass dieser Befehl selbst im „Silent“-Modus ausgeführt werden muss. Wir könnten genauso gut nicht die Befehlszeile verwenden Echo aus, aber platzieren Sie vor jedem Befehl einen „Hund“.

In vielen Fällen möchten Sie, dass eine Batchdatei bestimmte Meldungen auf dem Bildschirm (oder in einer Datei) anzeigt. In einigen Fällen kann es sich dabei um Fehlermeldungen handeln, in anderen um Informationsmeldungen, die dem Benutzer der Batch-Datei erklären, was gerade passiert, wenn wir mit der Batch-Datei eine andere nützliche Datei erstellen. Derselbe Echo-Befehl wird zum Anzeigen von Nachrichten verwendet. Als Parameter wird ihm der Text der anzuzeigenden Meldung übergeben. Die Auflistung der verbesserten Batchdatei ist unten aufgeführt.

@echo off rem ********************************************** ******** ******* rem Generieren von Hilfedateien mithilfe der Kopier- und Verschiebebefehle rem ************************ ********* ******************** @echo Generieren von Hilfedateien. Nur eine Sekunde... rem Erstellen Sie die Hilfedateien help copy > copy.help help move > move.help rem Erstellen Sie ein Verzeichnis zum Speichern der Hilfedateien md msdos-help rem Verschieben Sie die Hilfedateien in das vorbereitete Verzeichnis move *.help msdos -help echo Fertig!

Übergabe von Parametern an eine Befehlsdatei

Nehmen wir an, wir möchten eine Batchdatei erstellen, die zunächst Hilfe zur Beschreibung eines benutzerdefinierten Befehls generiert und diese dann zur Anzeige in Notepad lädt. Der Trick besteht darin, ihm beim nächsten Ausführen der Batch-Datei irgendwie mitzuteilen, an welchem ​​Befehl wir dieses Mal interessiert sind.

Um dieses Problem zu lösen, wird ein Pbereitgestellt. Es funktioniert ganz einfach. Wenn der Benutzer beim Ausführen einer Batchdatei mehrere Parameter angegeben hat, kennzeichnen wir im Text der Batchdatei den ersten davon mit dem Eintrag %1 , zweiter Eintrag %2 , dritter Eintrag %3 usw. Wir verwenden diese Notationen im Text der Befehlsdatei auf die gleiche Weise, wie wir Pronomen in der natürlichen Sprache verwenden.

Der Text der Befehlsdatei, die das Problem löst, wird in der folgenden Auflistung angezeigt. Achten Sie auf den Befehl helfen. Als Parameter wird ihm der erste Parameter der Befehlsdatei übergeben.

@echo off rem Wir erstellen eine Datei mit einer Beschreibung des Befehls, rem, dessen Name durch den Parameter help %1 > help.tmp übergeben wird. rem Wir laden die Beschreibungsdatei in den Notepad-Editor notepad help.tmp

Nehmen wir an, wir geben dieser Batchdatei einen Namen show-help.bat. Um beispielsweise eine Befehlsbeschreibung in einen Notizblock zu laden, dir, müssen wir den Befehl wie folgt eingeben.

Show-help.bat-Verzeichnis

Die folgende Befehlsdatei erstellt ein Verzeichnis mit dem im ersten Parameter angegebenen Namen und schreibt darin eine Datei mit dem Text, der den im zweiten Parameter angegebenen Befehl beschreibt.

Rem Ein Beispiel für eine Befehlsdatei mit zwei Parametern rem Erstellen Sie ein Verzeichnis mit dem durch den ersten Parameter angegebenen Namen md %1 rem Erstellen Sie darin eine Datei mit einer Beschreibung des durch den zweiten Parameter angegebenen Befehls rem help %2 > %1\ %2.Hilfe

Was passiert, wenn der Benutzer beim Ausführen dieser Batchdatei vier statt zwei Parameter angibt? Es ist in Ordnung, sie stören nichts, sie werden einfach nicht verwendet. Was passiert, wenn der Benutzer nur den ersten Parameter angibt? Der zweite Parameter ist leer. Der Effekt ist folgender: Die Batch-Datei wird ausgeführt, jedoch wie an Stelle der Aufzeichnung %2 es gibt nichts. Der Befehl help generiert eine Liste aller Befehle und speichert sie in einer Datei mit leerem Namen und der Erweiterung .help. Wenn der Benutzer diese Datei ohne Angabe von Parametern ausführt, dann versucht der Befehlsprozessor, den Befehl auszuführen md(Denken Sie daran, dies dient zum Erstellen eines Verzeichnisses.) Wir erhalten einen Syntaxfehler, da der Befehl md einen Parameter haben muss.

Die Verwendung von Parametern bietet also große Chancen, kann die Sache jedoch erheblich verkomplizieren. Damit die Batchdatei immer korrekt funktioniert, ist es notwendig, die Richtigkeit der vom Benutzer angegebenen Parameter zu überprüfen und irgendwie auf unvollständige oder falsche Eingabedaten zu reagieren. Dies ist natürlich nicht möglich, aber eine fehlerhaft funktionierende Batchdatei kann Probleme verursachen, insbesondere wenn dabei Daten gelöscht oder überschrieben werden.

Variablen. Befehl festlegen

Eine Variable ist ein benannter Wert. In Programmierlehrbüchern wird eine Variable normalerweise mit einem Umschlag verglichen, auf dem ein Name steht. Sie können etwas in den Umschlag stecken, zum Beispiel einen bestimmten Geldbetrag – das ist sein Wert. Wie beim Umschlag kann der Wert der Variablen geändert werden.

Um eine Variable zu deklarieren und ihr gleichzeitig einen Wert zuzuweisen, verwenden Sie den Befehl Satz. Ein Beispiel für diesen Befehl ist in der folgenden Auflistung dargestellt.

Rem Compiler von Hilfedateien im CHM-Format set help_compiler=c:\HTML Help Workshop\hcc.exe

Um den Wert einer Variablen zu extrahieren, wird ihr Name wie unten gezeigt zwischen zwei Prozentzeichen gesetzt.

Rem Compiler von Hilfedateien im CHM-Format set help_compiler=c:\HTML Help Workshop\hcc.exe rem Projekthilfedatei des Moduls „Warehouse“ set store_hpj=help\sources\store\store.hpj rem Projekthilfedatei des „ Modul „Sales“ set sales_hpj=help\sources\sales\sales.hpj rem Kompilieren Sie Hilfedateien %help_compiler% %store_hpj% %help_compiler% %sales_hpj%

Die folgende Auflistung zeigt, warum Variablen nützlich sind.

Erstens ermöglichen sie Ihnen, ein kurzes Fragment als Synonym dafür in einer Batchdatei anstelle eines langen Fragments zu verwenden (z. B. den Pfad zum Hilfedatei-Compiler). Zumindest ist es praktisch.

Zweitens ermöglichen sie es Ihnen, Wiederholungen im Text der Befehlsdatei von Fragmenten zu vermeiden, die sich in Zukunft ändern könnten. Stellen Sie sich vor, wir hätten Microsoft HTML Workshop in einem anderen Verzeichnis neu installiert. Wenn in einer Batch-Datei eine Variable verwendet wird, um den Pfad zu ihr aufzuzeichnen, reicht es aus, nur eine Zeile in der Batch-Datei zu korrigieren, nämlich diejenige, in der der Wert der Variablen zugewiesen ist help_compiler. Wenn wir den Pfad jedes Mal zum Compiler schreiben würden, wenn er aufgerufen werden müsste, müssten wir nach der Änderung des Pfads jede dieser Zeilen korrigieren. Im obigen Beispiel sind es zwei davon, aber in einem echten Projekt könnten es genauso gut fünf oder fünfzehn sein, abhängig von der Anzahl der Hilfedateien, die wir kompilieren möchten. Das Problem besteht nicht darin, dass es schwierig ist, jede Zeile manuell zu korrigieren (schließlich hat niemand die Befehle „Kopieren“ und „Einfügen“ abgebrochen), sondern dass dies die Wahrscheinlichkeit eines versehentlichen Fehlers erheblich erhöht.

Batchdateiparameter sind ebenfalls Variablen, unterscheiden sich jedoch von gewöhnlichen Variablen dadurch, dass ihre Werte beim Starten der Batchdatei festgelegt werden. Wenn wir in Zukunft von Variablen sprechen, insbesondere von der Arbeit mit deren Werten, werden wir, zumindest sofern diesbezüglich keine expliziten Vorbehalte bestehen, auch Befehlsdateiparameter meinen.

Beim Schreiben von Batch-Dateien wird häufig die folgende Technik verwendet: Mehrere Variablenwerte werden nebeneinander angezeigt (oder mit einigen Symbolen oder Zeilen durchsetzt), um so einen neuen sinnvollen Wert zu erhalten. Ein Beispiel ist in der folgenden Auflistung dargestellt.

Rem Pfad zum Hilfedatei-Compiler set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Pfad zum Verzeichnis, in dem sich die Hilfedateiprojekte befinden set project_path=e:\work\projects\help- Projekte rem Wir rufen den Compiler auf, um ein bestimmtes Projekt zu verarbeiten, rem, dessen Name im ersten Parameter %help_compiler% %project_path%\%1.hpj übergeben wird

Bedingungen prüfen und Optionen auswählen. if- und goto-Befehle

Mit dem if-Befehl können Sie Gruppen von Befehlen in einer Batchdatei auswählen, die abhängig von bestimmten Bedingungen ausgeführt oder nicht ausgeführt werden. Wofür ist das?

Die Zustandsprüfung ist fast ein notwendiger Schritt beim Erstellen von Batchdateien, die Parameter verwenden. Vor Beginn der Arbeit muss die Batchdatei im Allgemeinen sicherstellen, dass ihr der richtige Parametersatz übergeben wird. Andernfalls besteht ein hohes Risiko, dass es falsch oder ineffektiv ausgeführt wird und der Benutzer sich nur wundert, wo das Problem liegt. Wenn eine Batchdatei darüber hinaus Daten löscht, verschiebt oder überschreibt, kann dies bei falschen Parametern sogar zu Schäden führen.

Die folgende Auflistung zeigt die Befehlsdatei zur Kompilierung der Hilfedatei, mit der Sie bereits vertraut sind. Am Anfang der Befehlsdatei wurde eine Prüfung auf Nichtleerheit des ersten Parameters hinzugefügt. Bitte beachten Sie dieses Syntaxmerkmal: Die Vergleichsoperation verwendet ein doppeltes Gleichheitszeichen. Wenn der erste Parameter nicht leer ist, wird der Befehl goto ausgeführt, der die Shell auf das angegebene Label „wirft“. In diesem Fall lautet der Name dieser Bezeichnung „compile“. Beachten Sie, dass dort, wo eine Beschriftung erscheint, ihrem Namen ein Doppelpunkt vorangestellt ist, im goto-Befehl jedoch nicht. Wenn der erste Parameter leer ist, wechselt die Shell zur nächsten Zeile, was eine Fehlermeldung erzeugt. Und dann zum nächsten, der es ganz am Ende der Datei auf ein Etikett mit dem Namen überträgt beenden.

@echo off rem Wir prüfen, ob der Parameter angegeben ist, wenn nicht „%1“=="“ goto compile rem Wenn der Parameter leer ist, geben wir eine Fehlermeldung aus echo Der Projektname der rem-Hilfedatei ist nicht angegeben und gehen zu das Ende der REM-Befehlsdatei bis zum Ende goto Label Finish rem Dies ist ein Label mit dem Namen „compile:compile rem“ Unten sind die Kompilierungsbefehle aufgeführt rem Pfad zur Hilfedatei Compiler-Set help_compiler="c:\Program Files\HTML Help Workshop\hhc .exe“ rem Pfad zum Verzeichnis, in dem sich die Hilfeprojekte befinden files set project_path=e:\work\projects\help-projects rem Rufen Sie den Compiler auf, um ein bestimmtes Projekt zu verarbeiten, rem, dessen Name im ersten Parameter %help_compiler% übergeben wird %project_path%\%1.hpj rem Dies ist eine Bezeichnung mit dem Namen „finish:finish“.

Seien wir ehrlich, die vorgeschlagene Methode zur Überprüfung eines Parameters ist nicht die erfolgreichste.

Erstens: Wenn der Benutzer fälschlicherweise den Namen einer nicht vorhandenen Datei als Parameter angibt, begnügt sich die Batchdatei damit und versucht zu kompilieren. Eine bessere Möglichkeit besteht darin, zu überprüfen, ob eine solche Datei tatsächlich existiert. Zu diesem Zweck stellt die MS-DOS-Befehlssprache ein spezielles Wort zur Verfügung existieren. Deshalb wäre es besser zu schreiben: Wenn vorhanden, %1.hpj, gehe zum Kompilieren.

Zweitens die aktive Nutzung des Befehls gehe zu(der sogenannte bedingungslose Sprung) und Beschriftungen verwirren den Code erheblich. Technisch gesehen sind sie nicht schlecht, aber das Debuggen und Verwalten einer in diesem Stil geschriebenen Batchdatei ist ziemlich umständlich. Daher betrachten Programmierer das bedingungslose Springen seit langem als eine unerwünschte Technik. Nachfolgend wird eine aus Sicht des Programmierstils korrektere strukturierte Version gezeigt, die die Konstruktion verwendet ansonsten. Das funktioniert so: Wenn die Bedingung wahr ist, folgen die Befehle in Klammern Wenn, und wenn falsch, dann in Klammern danach anders.

@echo off rem Überprüfen Sie, ob der Parameter gesetzt ist, wenn er nicht vorhanden ist %1.hpj (rem Wenn der Parameter leer ist, wird eine Fehlermeldung angezeigt echo Dieses Hilfedateiprojekt existiert nicht.) else (rem Nachfolgend finden Sie die Kompilierungsbefehle rem Pfad zum Hilfedatei-Compiler set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Pfad zum Verzeichnis, in dem sich die Hilfedateiprojekte befinden set project_path=e:\work\projects\help-projects rem Rufen Sie den Compiler auf, um ein bestimmtes Projekt zu verarbeiten, dessen Name im ersten Parameter %help_compiler% %project_path%\%1.hpj übergeben wird.

Achten Sie auf die Einkerbung vom linken Rand. Sie sind optional, verbessern aber die Lesbarkeit des Textes der Batchdatei.

Lassen Sie uns ein weiteres Beispiel für die Arbeit mit Schecks geben. Die folgende Batchdatei erstellt ein Verzeichnis namens Hilfedateien(Angenommen, um kompilierte Hilfedateien hineinzuladen). Wenn darüber hinaus bereits ein Verzeichnis mit demselben Namen existiert (und es wahrscheinlich alte Hilfedateien enthält, die Sie nicht verlieren möchten: Was wäre, wenn sich die neuen als schlechter herausstellen würden?), weist die Batchdatei ihm die Erweiterung bak zu . Aber wenn das Verzeichnis help-files.bak bereits vorhanden ist, wird sie von der Batchdatei gelöscht (wir gehen davon aus, dass uns eine Sicherungskopie ausreicht).

Falls vorhanden, help-files.bak, rd help-files.bak, falls vorhanden, help-files, ren help-files, help-files.bak, md help-files

Massenverarbeitung von Dateien. für Befehl

Mit dem Befehl for können Sie die Ausführung wiederholter Aktionen desselben Typs organisieren. Sie können damit die Zahlen eins bis zehn anzeigen, wie in der folgenden Auflistung gezeigt.

Für /l %%i in (1,1,10) wird %%i zurückgegeben

Variable ich wird als Schleifenzähler bezeichnet. Aufgrund der einzigartigen Syntax des Befehls für, muss der Name des Schleifenzählers aus einem Buchstaben bestehen. Darüber hinaus müssen wir, wenn wir eine Batch-Datei schreiben, ein doppeltes Prozentzeichen vor den Namen des Schleifenzählers setzen, wenn wir jedoch nur einen Befehl in die Befehlszeile eingeben, dann ein einzelnes.

Die Logik dieses Befehls ist wie folgt. Nach dem Wort In der Änderungsbereich des Zyklenzählers wird angezeigt. In dieser Version des Befehls handelt es sich um ein Zahlentripel: den Anfangswert des Zählers, den Zählschritt, den Grenzwert des Zählers. Beim Ausführen eines Befehls weist die Shell zunächst die Variable zu ich Bedeutung 1 , und dann wird es bei jedem Schritt der Schleife um erhöht 1 bis es übersteigt 10 . Offensichtlich wird es zehn solcher Schritte geben. Wenn wir als Zählschritt eine Zahl angegeben haben 2 , dann würde die Schleife fünfmal ausgeführt. Bei jedem Schritt der Schleife wird der Schleifenkörper geschrieben, nachdem das Wort ausgeführt wurde Tun. Im obigen Beispiel ist dies der Befehl echo, der den aktuellen Wert des Schleifenzählers anzeigt.

Sie können sich wahrscheinlich eine Situation vorstellen, in der so etwas tatsächlich erforderlich ist, normalerweise jedoch der Befehl für Wird zum Iterieren und Verarbeiten von Dateien verwendet. Es muss gesagt werden, dass in relativ einfachen Fällen die Massenverarbeitung von Dateien mithilfe von Platzhalterzeichen erfolgt. Wenn wir alle Dateien im aktuellen Verzeichnis durch die Erweiterung ersetzen möchten .htm An .html, wir geben den Befehl ein ren *.htm *.html. Wenn das Gleiche aber nicht in einem Verzeichnis, sondern in einem Verzeichnisbaum erledigt werden soll, dann kommt man nicht ohne den Befehl for aus. Die folgende Batchdatei führt diesen Vorgang für alle HTM-Dateien im Website-Unterverzeichnis des aktuellen Verzeichnisses aus. Genauer gesagt, im gesamten darin enthaltenen Verzeichnisbaum Webseite.

Für /r Website %%i in (*.htm) muss %%i %%~ni.html erstellt werden

Schlüssel /R zeigt an, dass das Verzeichnis durchlaufen werden muss Webseite und all sein Inneres. Wenn Sie es nicht angeben (dürfen dann aber kein Verzeichnis angeben), werden nur Dateien im aktuellen Verzeichnis verarbeitet. Der Bereich der Schleifenzählerwerte in dieser Befehlsvariante ist die Menge aller Dateien mit der Erweiterung .htm, befindet sich in einem Verzeichnis (genauer gesagt, einem Baum) Webseite. Auf den ersten Blick ein seltsamer Eintrag ~ni bedeutet das aus dem Wert der Variablen ich Sie müssen nur den Dateinamen auswählen. Die MS-DOS-Befehlssprache bietet mehrere solcher Modifikatoren, beispielsweise das Schreiben ~xi bezeichnet die Dateierweiterung. Alle Modifikatoren werden in der Befehlshilfe beschrieben für.

Der Rumpf einer Schleife kann aus mehreren in Klammern eingeschlossenen Befehlen bestehen.

@echo off for /r website %%i in (*.htm) do (rem Den Dateinamen ausgeben echo %%i rem Die Datei umbenennen ren %%i %%~ni.html)

Übertragen der Kontrolle an eine andere Batchdatei. Aufrufbefehl

Es ist möglich, aus einer Batchdatei heraus eine weitere Batchdatei aufzurufen. Der Befehl hierfür lautet Anruf. Großartig, die in der aufrufenden Batchdatei angegebenen Variablen sind für den Angerufenen „sichtbar“. Und umgekehrt: Nachdem die aufgerufene Datei ihre Arbeit beendet und die Kontrolle an den Aufrufer zurückgegeben hat, „sieht“ dieser die Variablen, die ihm von der aufgerufenen „Vererbung“ hinterlassen wurden. Dadurch kann der Batchdateientwickler etwa Folgendes tun: Wenn mehrere Befehlsdateien dieselben Werte verwenden müssen, beispielsweise Pfade zu einigen Dateien, können diese in einer separaten Befehlsdatei abgelegt werden, die die Rolle einer Konfigurationsdatei übernimmt. Jede funktionierende Befehlsdatei beginnt mit einem Aufruf der Konfigurationsdatei. Der Vorteil besteht darin, dass Sie bei einem Pfadwechsel nur Änderungen an einem Pfad vornehmen müssen Konfigurationsdatei, und nicht in viele Arbeiter.

Batchdatei „Konfiguration“. config.bat.

Rem Pfad zum Hilfedatei-Compiler set help_compiler="c:\Program Files\HTML Help Workshop\hhc.exe" rem Pfad zum Verzeichnis, in dem sich die Hilfedateiprojekte befinden set project_path=e:\work\projects\help- Projekte

„Arbeitende“ Batchdatei.

@echo off rem Variablen einrichten aufrufen config.bat rem Überprüfen Sie, ob der Parameter gesetzt ist, falls nicht vorhanden %1.hpj (rem Wenn der Parameter leer ist, wird eine Fehlermeldung angezeigt echo Dieses Hilfedateiprojekt existiert nicht.) else ( rem Nachfolgend sind die Kompilierungsbefehle aufgeführt. rem Wir rufen den Compiler auf, um ein bestimmtes Projekt zu verarbeiten. rem, dessen Name im ersten Parameter übergeben wird (%help_compiler% %project_path%\%1.hpj)