„Stapelverarbeitungsdatei“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
ausführbar...
Markierung: 2017-Quelltext-Bearbeitung
Ü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 = .BAT &nbsp;.cmd
| Dateiendung = <code>.SUB</code>&nbsp; <code>.BAT</code>&nbsp; <code>.cmd</code>
| MIME =
| MIME =
| MIME-Anm =
| MIME-Anm =
Zeile 12: Zeile 12:
| MagischeZahlHex =
| MagischeZahlHex =
| Entwickler =
| Entwickler =
| Veröffentlicht = 1981 mit PC DOS 1.0
| Veröffentlicht = CP/M<br />1981 mit PC&nbsp;DOS 1.0
| LetzteVersion =
| LetzteVersion =
| LetzteVersionDatum =
| LetzteVersionDatum =
Zeile 26: Zeile 26:


== Technische Details und Geschichte ==
== Technische Details und Geschichte ==
* Das Dateiformat besteht aus [[Textdatei]]en, welche von einem [[Kommandozeileninterpreter]] als [[Stapelverarbeitung]] ausgeführt werden können. Der Kommandozeileninterpreter der meisten PC-kompatiblen DOS-Betriebssysteme wie [[MS-DOS]], [[PC&nbsp;DOS]] oder [[DR-DOS]] ist <code>[[COMMAND.COM]]</code>, der von [[Microsoft Windows NT|Windows&nbsp;NT]] ist <code>[[cmd.exe]]</code>.
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&nbsp;DOS und [[DR-DOS]] ist <code>[[COMMAND.COM]]</code>, der von [[Microsoft Windows NT|Windows&nbsp;NT]] ist <code>[[cmd.exe]]</code>. Alternativen wie [[4DOS]] erweitern die Skriptfähigkeiten durch zusätzliche Kommandos und zusätzliche Funktionen bestehender Kommandos.

* Als Laufzeitumgebung und Interpreter wird der Kommandozeileninterpreter verwendet. Daher lassen sich alle Kommandozeilenbefehle in der Regel auch aus einer Stapelverarbeitungsdatei heraus ausführen. Des Weiteren sind auch [[Kommentar (Programmierung)|Kommentare]], Sprungmarken und Abfragen verwendbar.
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&nbsp;NT]] und [[OS/2]] (die Nachfolger von PC&nbsp;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&nbsp;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.
* Unter Windows&nbsp;NT werden die meisten Befehle von <code>COMMAND.COM</code> durch <code>cmd.exe</code> nachgebildet. Daher ist es möglich, dass eine für MS-DOS geschriebene Stapelverarbeitungsdatei unter Windows&nbsp;NT ausführbar ist.

* Bei Microsoft wird eine Textdatei zur Stapelverarbeitung, indem sie die [[Dateinamenserweiterung]] <code>.bat</code> oder unter Windows&nbsp;NT und OS/2 (die Nachfolger von PC&nbsp;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.
* 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.

=== Kompatibilität ===
Da unter Windows&nbsp;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&nbsp;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.&nbsp;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.&nbsp;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 Programmes durch einen Tastendruck könnte wie folgt aussehen:
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>


== Siehe auch ==
== 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 ===
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 ==
== Weblinks ==

Version vom 1. November 2021, 18:44 Uhr

Stapelverarbeitungsdatei
Windows Batch
Batch file

Icon ab Windows Vista
Dateiendung: .SUB  .BAT  .cmd
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 Stapelverarbeitungsdatei
  • CLS (von englisch clear screen): Leert den Bildschirm
  • PAUSE: 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.

  1. 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).“
  2. 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).