„Stapelverarbeitungsdatei“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
Y2kbug (Diskussion | Beiträge) ausführbar... Markierung: 2017-Quelltext-Bearbeitung |
Y2kbug (Diskussion | Beiträge) Überarbeitung der Technischen Details und Geschichte; CP/M dazu, mit Quelle; Siehe auch gelöscht, da der Kommandozeileninterpreter bereits im Text verlinkt ist. PowerShell zum neuen Abschnitt Alternativen/Nachfolger, gemeinsam mit dem neuen Inhalt zu 4DOS und .BTM. Markierung: 2017-Quelltext-Bearbeitung |
||
Zeile 5: | Zeile 5: | ||
| Screenshot = |
| Screenshot = |
||
| Beschreibung = <!-- nur für Screenshot --> |
| Beschreibung = <!-- nur für Screenshot --> |
||
| Dateiendung = . |
| Dateiendung = <code>.SUB</code> <code>.BAT</code> <code>.cmd</code> |
||
| MIME = |
| MIME = |
||
| MIME-Anm = |
| MIME-Anm = |
||
Zeile 12: | Zeile 12: | ||
| MagischeZahlHex = |
| MagischeZahlHex = |
||
| Entwickler = |
| Entwickler = |
||
| Veröffentlicht = 1981 mit PC |
| Veröffentlicht = CP/M<br />1981 mit PC DOS 1.0 |
||
| LetzteVersion = |
| LetzteVersion = |
||
| LetzteVersionDatum = |
| LetzteVersionDatum = |
||
Zeile 26: | Zeile 26: | ||
== Technische Details und Geschichte == |
== Technische Details und Geschichte == |
||
Als Dateiformat sind Stapelverarbeitungsdateien grunsätzlich [[Textdatei]]en, deren Inhalt von einem [[Kommandozeileninterpreter]] als Stapelverarbeitung – analog zu [[Shellskript]]s von [[Unix]] – ausgeführt werden können. Der Kommandozeileninterpreter der meisten PC-kompatiblen DOS-Betriebssysteme wie MS-DOS, PC DOS und [[DR-DOS]] ist <code>[[COMMAND.COM]]</code>, der von [[Microsoft Windows NT|Windows NT]] ist <code>[[cmd.exe]]</code>. Alternativen wie [[4DOS]] erweitern die Skriptfähigkeiten durch zusätzliche Kommandos und zusätzliche Funktionen bestehender Kommandos. |
|||
⚫ | |||
Unter [[CP/M]], dem Vorbild dem ursprünglich als [[86-DOS]] entwickelten späteren MS-DOS, gab es mit <code>SUBMIT</code> bereits die Möglichkeit, Stapelverarbeitungsdateien mit der Dateinamenserweiterung <code>.SUB</code> zu starten.<ref>{{Literatur |Autor=Schneider Wolfgang |Titel=Einführung in die Anwendung des Betriebssystems CP/M |Verlag=Springer-Verlag |Datum=2013 |Seiten=18 |ISBN=978-3-322-89716-9 |Online={{Google Buch |BuchID=tyibBgAAQBAJ |Seite=18 |Hervorhebung=SUBMIT}} |Zitat=Submit (Einreichen, vorlegen) – Mit Hilfe des SUBMIT-Kommandos können mehrere CP/M-Kommandos miteinander verknüpft werden. Sie werden automatisch hintereinander ausgeführt (sog. Batch-Verarbeitung, d.h. Stapelverarbeitung).}}</ref><ref>{{Literatur |Autor=Allen Kent, James G. Williams |Titel=Debuggers and Debugging Techniques to Electron Beam Lithography |Sammelwerk=Encyclopedia of Microcomputers |Band=5 |Verlag=CRC Press |Datum=1990 |Seiten=161 |Sprache=en |ISBN=978-0-8247-2704-8 |Online={{Google Buch |BuchID=VPfXt2psQGEC |Seite=181 |Hervorhebung=SUBMIT}} }}</ref> Unter [[Microsoft Windows NT|Windows NT]] und [[OS/2]] (die Nachfolger von PC DOS bzw. MS-DOS) werden die meisten Befehle von <code>COMMAND.COM</code> durch <code>cmd.exe</code> nachgebildet. Da aber auch zusätzliche Befehle eingeführt wurden, verwenden Stapelverarbeitungsdateien auf Windows NT basierten Windows-Versionen und auf OS/2, die explizit auf <code>cmd.exe</code> angewendet werden müssen, die Dateinamenserweiterung <code>.cmd</code> – <code>.BAT</code> funktioniert jedoch weiterhin. |
|||
⚫ | |||
* Bei Microsoft wird eine Textdatei zur Stapelverarbeitung, indem sie die [[Dateinamenserweiterung]] <code>.bat</code> oder unter Windows NT und OS/2 (die Nachfolger von PC DOS bzw. MS-DOS) alternativ die Dateinamenserweiterung <code>.cmd</code> erhält. Solche Dateien werden automatisch vom Kommandozeileninterpreter abgearbeitet, wenn sie mit ihrem Namen aufgerufen werden. |
|||
⚫ | Allen Betriebssystem ist gemein, dass als Laufzeitumgebung und Interpreter der Kommandozeileninterpreter verwendet wird. Alle Kommandozeilenbefehle lassen sich in der Regel sowohl auf der Kommandozeile direkt als auch aus einer Stapelverarbeitungsdatei heraus ausführen, auch [[Kommentar (Programmierung)|Kommentare]]. Sprungmarken und Abfragen sind jedoch nur in einer Stapelverarbeitungsdatei sinnvoll anwendbar und es gibt teilweise kleinere Unterschiede, etwa bei der Verwendung von Variablen. |
||
⚫ | |||
=== Kompatibilität === |
|||
⚫ | Da unter Windows NT die meisten Befehle von <code>COMMAND.COM</code> durch <code>cmd.exe</code> nachgebildet sind, sollte es in den meisten Fällen möglich sein, eine für MS-DOS geschriebene Stapelverarbeitungsdatei auch unter Windows NT auszuführen. Aber selbst unter reinem DOS können Unterschiede bei Paramentern genutzter Dienst- und Systemprogramme Anpassungen an der Stapelverarbeitungsdatei nötig machen, damit diese weiterhin funktioniert. |
||
== Verwendung == |
== Verwendung == |
||
Stapelverarbeitungsdateien werden zur Ausführung von immer wiederkehrenden Befehlsfolgen verwendet (z. B. für automatisierte Anmeldevorgänge oder Laden von [[TSR-Programm]]en). Es ist auch möglich, die Ausführung einzelner Befehlszeilen [[Bedingte Anweisung und Verzweigung|von einer Bedingung abhängig]] zu machen. Dafür gibt es seit IBM DOS bzw. MS-DOS 2.0 Konstrukte wie <code>IF</code> oder <code>IF NOT</code>. Unter Windows-NT-basierten Systemen wurden unter anderem <code>IF</code>- und <code>FOR</code>-Befehle stark aufgewertet, indem sie zum Beispiel Vergleiche von Werten anboten. Neben diesen Bedingungsoperatoren können auch Variablen genutzt, Sprünge ausgeführt, Benutzereingaben realisiert und Kommentare geschrieben werden. |
Stapelverarbeitungsdateien werden zur Ausführung von immer wiederkehrenden Befehlsfolgen verwendet (z. B. für automatisierte Anmeldevorgänge oder Laden von [[TSR-Programm]]en). Es ist auch möglich, die Ausführung einzelner Befehlszeilen [[Bedingte Anweisung und Verzweigung|von einer Bedingung abhängig]] zu machen. Dafür gibt es seit IBM DOS bzw. MS-DOS 2.0 Konstrukte wie <code>IF</code> oder <code>IF NOT</code>. Unter Windows-NT-basierten Systemen wurden unter anderem <code>IF</code>- und <code>FOR</code>-Befehle stark aufgewertet, indem sie zum Beispiel Vergleiche von Werten anboten. Neben diesen Bedingungsoperatoren können auch Variablen genutzt, Sprünge ausgeführt, Benutzereingaben realisiert und Kommentare geschrieben werden. |
||
Im PC-kompatiblen DOS diente die Datei <code>[[AUTOEXEC.BAT]]</code> zur Systemkonfiguration beim [[Booten|Starten]] des Betriebssystems. Windows 3.x arbeitet beim Start die Datei <code>WINSTART.BAT</code> ab. |
Im PC-kompatiblen DOS diente die Datei <code>[[AUTOEXEC.BAT]]</code> zur Systemkonfiguration beim [[Booten|Starten]] des Betriebssystems. [[Windows 3.x]] arbeitet beim Start die Datei <code>WINSTART.BAT</code> ab. |
||
== Bedeutung einiger Batch-Befehle == |
== Bedeutung einiger Batch-Befehle == |
||
Zeile 51: | Zeile 54: | ||
ECHO Hello World! |
ECHO Hello World! |
||
</syntaxhighlight> |
</syntaxhighlight> |
||
Eine erweiterte Version mit angepasster Titelzeile, Schrift- und Hintergrundfarbe und einer Aufforderung zum Schließen des |
Eine erweiterte Version mit angepasster Titelzeile, Schrift- und Hintergrundfarbe und einer Aufforderung zum Schließen des Programms durch einen Tastendruck könnte wie folgt aussehen: |
||
Die Absätze sind jedoch nicht zwingend erforderlich, sie dienen lediglich zur besseren Übersichtlichkeit. |
Die Absätze sind jedoch nicht zwingend erforderlich, sie dienen lediglich zur besseren Übersichtlichkeit. |
||
Zeile 83: | Zeile 86: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
== |
== Alternative und Nachfolger == |
||
=== 4DOS Batch-to-Memory === |
|||
* [[Kommandozeileninterpreter]] |
|||
Der alternative Kommandozeileninterpreter [[4DOS]], der als NDOS auch Teil der [[Norton Utilities]] ist, ergänzt den Funktionsumfang von Stapelverarbeitungsdateien. Um Verwechslungen und Inkompatibilitäten zu vermeidern, nutzt 4DOS die Dateinamenserweiterung <code>.BTM</code>, von {{enS|Batch To Memory}}, da die Dateien vor der Ausführung vollständig in den Arbeitsspeicher kopiert werden. Das verbraucht zwar einerseits mehr Speicher, andererseits ist die Ausführung dadurch schneller, da nicht nach jeder Zeile erneut in der Stapelverarbeitungsdatei gelesen werden muss. |
|||
=== PowerShell === |
|||
⚫ | |||
== Weblinks == |
== Weblinks == |
Version vom 1. November 2021, 18:44 Uhr
Stapelverarbeitungsdatei Windows Batch Batch file | |
---|---|
Icon ab Windows Vista | |
Dateiendung: |
|
Erstveröffentlichung: | CP/M 1981 mit PC DOS 1.0 |
Art: | Stapelverarbeitung |
Erweitert von: | Unix-Shell |
Erweitert zu: | PowerShell |
Eine Stapelverarbeitungsdatei ist eine ausführbare Textdatei mit einer Reihe von Kommandos, die nach einander abgearbeitet werden. Der Begriff leitet sich von der aus der Datenverarbeitung stammenden Stapelverarbeitung (englisch batch) ab. Da unter PC DOS und MS-DOS, den vorinstallierten Betriebssystemen des IBM-PC und kompatibler Computer, die Dateinamenserweiterung .BAT
etabliert hatte, ist auch abseits von kompatiblen DOS-Betriebssystemen BAT-Datei bzw. Batch-Datei und Batchskript bzw. Stapelverarbeitungsskript (analog Shellskript) ein Synonym für Stapelverarbeitungsdatei (englisch batch file).
Technische Details und Geschichte
Als Dateiformat sind Stapelverarbeitungsdateien grunsätzlich Textdateien, deren Inhalt von einem Kommandozeileninterpreter als Stapelverarbeitung – analog zu Shellskripts von Unix – ausgeführt werden können. Der Kommandozeileninterpreter der meisten PC-kompatiblen DOS-Betriebssysteme wie MS-DOS, PC DOS und DR-DOS ist COMMAND.COM
, der von Windows NT ist cmd.exe
. Alternativen wie 4DOS erweitern die Skriptfähigkeiten durch zusätzliche Kommandos und zusätzliche Funktionen bestehender Kommandos.
Unter CP/M, dem Vorbild dem ursprünglich als 86-DOS entwickelten späteren MS-DOS, gab es mit SUBMIT
bereits die Möglichkeit, Stapelverarbeitungsdateien mit der Dateinamenserweiterung .SUB
zu starten.[1][2] Unter Windows NT und OS/2 (die Nachfolger von PC DOS bzw. MS-DOS) werden die meisten Befehle von COMMAND.COM
durch cmd.exe
nachgebildet. Da aber auch zusätzliche Befehle eingeführt wurden, verwenden Stapelverarbeitungsdateien auf Windows NT basierten Windows-Versionen und auf OS/2, die explizit auf cmd.exe
angewendet werden müssen, die Dateinamenserweiterung .cmd
– .BAT
funktioniert jedoch weiterhin.
Allen Betriebssystem ist gemein, dass als Laufzeitumgebung und Interpreter der Kommandozeileninterpreter verwendet wird. Alle Kommandozeilenbefehle lassen sich in der Regel sowohl auf der Kommandozeile direkt als auch aus einer Stapelverarbeitungsdatei heraus ausführen, auch Kommentare. Sprungmarken und Abfragen sind jedoch nur in einer Stapelverarbeitungsdatei sinnvoll anwendbar und es gibt teilweise kleinere Unterschiede, etwa bei der Verwendung von Variablen.
Kompatibilität
Da unter Windows NT die meisten Befehle von COMMAND.COM
durch cmd.exe
nachgebildet sind, sollte es in den meisten Fällen möglich sein, eine für MS-DOS geschriebene Stapelverarbeitungsdatei auch unter Windows NT auszuführen. Aber selbst unter reinem DOS können Unterschiede bei Paramentern genutzter Dienst- und Systemprogramme Anpassungen an der Stapelverarbeitungsdatei nötig machen, damit diese weiterhin funktioniert.
Verwendung
Stapelverarbeitungsdateien werden zur Ausführung von immer wiederkehrenden Befehlsfolgen verwendet (z. B. für automatisierte Anmeldevorgänge oder Laden von TSR-Programmen). Es ist auch möglich, die Ausführung einzelner Befehlszeilen von einer Bedingung abhängig zu machen. Dafür gibt es seit IBM DOS bzw. MS-DOS 2.0 Konstrukte wie IF
oder IF NOT
. Unter Windows-NT-basierten Systemen wurden unter anderem IF
- und FOR
-Befehle stark aufgewertet, indem sie zum Beispiel Vergleiche von Werten anboten. Neben diesen Bedingungsoperatoren können auch Variablen genutzt, Sprünge ausgeführt, Benutzereingaben realisiert und Kommentare geschrieben werden.
Im PC-kompatiblen DOS diente die Datei AUTOEXEC.BAT
zur Systemkonfiguration beim Starten des Betriebssystems. Windows 3.x arbeitet beim Start die Datei WINSTART.BAT
ab.
Bedeutung einiger Batch-Befehle
@ECHO OFF
: Unterdrückt die Ausgabe des Befehls in der StapelverarbeitungsdateiCLS
(von englisch clear screen): Leert den BildschirmPAUSE
: Pausiert eine Stapelverarbeitung solange, bis der Benutzer eine Taste gedrückt hat.PAUSE > NUL
: Pausiert eine Stapelverarbeitung solange, bis der Benutzer eine Taste gedrückt hat, die Meldung "Drücken Sie eine beliebige Taste..." wird in die virtuelle Gerätedatei NUL umgeleitet, wodurch diese nicht auf dem Bildschirm ausgegeben wird.EXIT
: Beendet die Stapelverarbeitungsdatei
Hello-World-Beispiel
Die Ausgabe des klassischen Hello-World-Beispiels lässt sich durch eine Stapelverarbeitungsdatei erzeugen. Diese sollte zuvor unter geeignetem Dateinamen z. B. hello.bat
gespeichert werden.
REM Text "Hello World!" ausgeben
ECHO Hello World!
Eine erweiterte Version mit angepasster Titelzeile, Schrift- und Hintergrundfarbe und einer Aufforderung zum Schließen des Programms durch einen Tastendruck könnte wie folgt aussehen:
Die Absätze sind jedoch nicht zwingend erforderlich, sie dienen lediglich zur besseren Übersichtlichkeit.
REM Befehle mit "@" werden nicht ausgegeben. Befehle mit REM werden nicht verarbeitet (Kommentar). Befehle mit :: oder @REM werden weder ausgegeben noch verarbeitet.
@ECHO OFF
REM Kommandozeilenfenster leeren
CLS
REM Der Titel des Fensters wird zu "Hallo-Welt-Programm" geändert (nur Windows)
TITLE Hallo-Welt-Programm
REM Die Windows-Codepage wird zu "1252" (westeuropäisch) geändert, dadurch kann unter anderem "ü" ausgegeben werden.
CHCP 1252
REM Die Schrift- und Hintergrundfarbe wird geändert
COLOR 4E
REM Text "Hallo Welt!" wird ausgegeben
ECHO Hallo Welt!
REM Leerzeile ausgeben
ECHO.
REM Es wird der Text "Taste drücken zum Beenden" ausgegeben und gewartet bis der Benutzer eine Taste drückt
ECHO Taste drücken zum Beenden
PAUSE > NUL
Alternative und Nachfolger
4DOS Batch-to-Memory
Der alternative Kommandozeileninterpreter 4DOS, der als NDOS auch Teil der Norton Utilities ist, ergänzt den Funktionsumfang von Stapelverarbeitungsdateien. Um Verwechslungen und Inkompatibilitäten zu vermeidern, nutzt 4DOS die Dateinamenserweiterung .BTM
, von englisch Batch To Memory, da die Dateien vor der Ausführung vollständig in den Arbeitsspeicher kopiert werden. Das verbraucht zwar einerseits mehr Speicher, andererseits ist die Ausführung dadurch schneller, da nicht nach jeder Zeile erneut in der Stapelverarbeitungsdatei gelesen werden muss.
PowerShell
Im Jahr 2006 wurde von Microsoft PowerShell, eine modernere und plattformübergreifende Alternative, veröffentlicht, mit der Skripte in der eigens dafür entwickelten PowerShell Scripting Language geschrieben werden können.
Weblinks
- ↑ Schneider Wolfgang: Einführung in die Anwendung des Betriebssystems CP/M. Springer-Verlag, 2013, ISBN 978-3-322-89716-9, S. 18 (eingeschränkte Vorschau in der Google-Buchsuche): „Submit (Einreichen, vorlegen) – Mit Hilfe des SUBMIT-Kommandos können mehrere CP/M-Kommandos miteinander verknüpft werden. Sie werden automatisch hintereinander ausgeführt (sog. Batch-Verarbeitung, d.h. Stapelverarbeitung).“
- ↑ Allen Kent, James G. Williams: Debuggers and Debugging Techniques to Electron Beam Lithography. In: Encyclopedia of Microcomputers. Band 5. CRC Press, 1990, ISBN 978-0-8247-2704-8, S. 161 (englisch, eingeschränkte Vorschau in der Google-Buchsuche).