|
Dieses Betriebssystem wurde durch Text-Eingabe gesteuert. |
Die DOS-Konsole ist jedoch nur vernachlässigt. Für die Steuerung und Automatisierung des Betriebssystems ist eine Konsole wichtiger denn je. |
| Das Konzept einer einfachen und flexiblen Konsolen-(shell, batch)-Sprache ist alt, nicht schlecht, aber stark vernachlässigt. | In Windows Nachfolge-Versionen sollte zwar eine neue Sprache Microsoft Shell Command Language (MSCL) eingeführt werden, aber diese Ankündigung ist wie die meisten anderen dieses Herstellers seit Jahren unerfüllt... |
| cmd.exe | Einstellung und Bedienung der Windows-Konsole |
| Befehle | Die "Befehle" sind meist eigene Programme (*.com, *.exe) |
| Scripts | Script-Programme mit *.cmd - Dateien |
| Argumente | Übergabe von Argumenten (Parametern) an (Script)-Programme |
| Variable | System-Variable, private Variable, Arithmetik und Strings |
| Kommentare | Erklärungen und Debug-Werkzeug |
| Eingabe & Ausgabe | Echo, Eingabe aus Dateien (<), Ausgabe an Dateien (>, >>), Filter (|) |
| Verzweigung | Unbedigte (Goto) und bedingte (If) Verzweigung |
| Schleifen | Wiederholung von Programmteilen (For) |
| Unterprogramme | Wiederverwendbare Programmteile (Call) |
| Startmenü | Ausführung von Konsolen-Programmen im Menü Start | Programme |
| Ergänzung | der veralteten Windows-Konsole mit Cygwin, Perl, PHP, . . |
| PowerShell | Windows-Konsole ab Windows-7 |
| System | Mit Programmiersprachen Konsolen-Befehle erteilen |
| Verwandte Themen | Windows- Hilfsprogramme, Windows- Umgebung, Linux-Shell |
| Links |
Ausgewählte
|
Einstellung und Bedienung von cmd.exe |
|
Konsolen-Programme:Auf → Linux hat sich eine Vielfalt von Konsolen-(Shell)-Programmen entwickelt.Sie haben die Auswahl unter mehreren sehr leistungsfähigen Programmen. Das gesamte Betriebssystem lässt sich damit ausgezeichnet steuern oder fernsteuern, was der Verwendung als Server sehr entgegenkommt. Im Internet und in der Literatur finden sie umfangreiche Hilfe, Beispiele, usw. |
Auf DOS war das Angebot auf das jeweilige Programm des Herstellers beschränkt. Das wurde zwar mit jeder DOS-Version weiterentwickelt, jedoch seit dem Umstieg auf → Windows vernachlässigt. Das Konsolen-Programm cmd.exe ist heute ein veraltetes Restprodukt. Die Dokumentation ist spärlich, das Angebot an Beispielen gering. |
|
Das Programm cmd.exe finden sie
(je nach Version) meist in
C:\Windows\system32\cmd.exe
► Ihr Startmenü | Programme sollte eine Verknüpfung zum Start des Konsolen-Programms enthalten. Meist befindet sich dort bereits eine Verknüpfung, z.B. unter "Eingabeaufforderung". In den meisten Windows-Konfigurationen finden sie die Eingabeaufforderung in |
►
Alternativ können sie eine Konsole so starten:
►
Das Fenster können sie alternativ
mit Taste öffnen:
Geben sie cmd ein. ► Sie können mehrere Instanzen der Konsole betreiben, d.h. das Programm kann gleichzeitig in mehrere Fenstern laufen, die unabhängig voneinander arbeiten. |
|
►
Rechts-Klicken sie in die Titelzeile eines Konsolen-Fensters und wählen sie
Eigenschaften | Layout ► Stellen sie den Fensterpuffer größer ein, mindestens auf Höhe=500. So bleibt mehr Platz für die Ausgabe längerer Texte. Sie können dann im Konsolen-Fenster nach oben rollen und weiter zurückliegende Befehle oder Ausgabetexte anzeigen. ► Für ungehemmte Nostalgie stellen sie die Farben so ein: Farben | Fenstertext | Rot=0, Grün=255, Blau=0
|
►
Zum Kopieren und Einsetzen zwischen Konsole und anderen Programmen aktivieren sie
QuickEdit. ► Einstellungen speichern: Die Frage zum Speichern der Einstellungen wird automatisch beim Schließen gestellt - Schließen sie das Konsolen-Fenster und speichern sie die Argumente für "die Verknüpfung, welche dieses Fenster aufruft" |
Command extensions:Diese "Erweiterungen" sind normalerweise eingeschaltet. Abschalten der extensions reduziert die Möglichkeiten einiger Befehle (siehe Hilfe zu den einzelnen Befehlen) |
Erweiterungen erzwingen:
cmd /x
Erweiterungen abschalten:
cmd /y
|
|
Die Standard-Einstellung der extensions wird in der
Registry-Datenbank verwaltet:
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions
REG_DWORD=1 ist eingeschaltet, REG_DWORD=0
abgeschaltet.
|
|
| Als DOS-Reminiszenz steht auch das 16-bit-Programm command.com zur Verfügung - Ebenfalls ein Befehls-Interpreter, jedoch älter und "näher" zu DOS. |
Die
→ Umgebungs-Variable ComSpec zeigt das laufende
Konsolen-Programm an:
C:\> echo %ComSpec%
|
|
Kopieren & Einsetzen im Konsolen-Fenster: Dafür muss man aus Gründen, die nur M$ kennt, eine eigene Prozedur auf sich nehmen: • Im Konsolenfenster: Rechtsklick, Befehl "Markieren" • Der blinkende DOS-Cursor erscheint links oben. • Markieren sie mit der Maus einen beliebigen Ausschnitt. • Tastatur-Befehl <Strg>-C kopiert in die Zwischenablage • Den Inhalt können sie nun beliebig einsetzen. |
Umgekehrt gehts leichter; • Text (z.B. von einem Editor) kopieren • Im Konsolen-Fenster: Rechtsklick, Befehl "Einfügen". Wenn sie (s.o. im gleichen Absatz) QuickEdit aktiviert haben, dann können sie jederzeit Konsolen-Bereiche mit der Maus markieren und kopieren. |
Not-Halt:Mit Tastatur-Befehl Ctrl-S bzw. Strg-S wird ein laufendes Script-Programm angehalten. Mit Klick auf eine beliebige andere Taste oder Ctrl-Q wird das Programm fortgesetzt.Test z.B. mit C:\> tree
|
Mit Tastatur-Befehl Ctrl-C bzw. Strg-C wird ein laufendes Script-Programm beendet. (evtl. mehrmals eingeben). Schließen des Konsolen-Fensters beendet normalerweise ebenfalls laufende Script-Programme. |
Groß- und Klein-Schreibungwird von der Windows-Konsole (meist) ignoriert.Das ist ein wichtiger Unterschied zu Linux, wo streng unterschieden wird ! |
Einzelne Windows Befehle sind jedoch sehr wohl groß/klein-empfindlich - das übliche Windows-Dilemma. - Lesen sie dazu die Befehls-spezifische Hilfe. |
OptionenFür die Ausführung der Konsole cmd.exe sind ungewöhnlich viele Optionen zulässig. Die Liste ist lang, kompliziert und wenig bekannt. |
Liste der Optionen (2. Zeile mit Ausgabe an eine Text-Datei):
C:\> cmd /?
C:\> cmd /? > c:\cmd_options.txt |
KonfigurationDas Programm mode konfiguriert einige Standard Peripherie-Geräte bzw. zeigt deren Konfiguation an:Diese Anweisung zeigt die aktuelle Konfiguration der Windows-(DOS)-Konsole, u.a. Anzahl der Zeilen und Spalten und den verwendeten → Zeichensatz (CodePage): C:\> mode con
|
Mit dieser Anweisung kann man den Zeichensatz ändern: C:\> mode con: cp select=yyy
Beispiele für die 3stellige CodePage-Nummer yyy 437 (Original US IBM-PC), 737 (Griechisch), 850 (Euro-Variante, u.a. mit de-Umlauten = Standard in deutschen Systemen), 852 (slawische Zeichen), 862 (Hebräisch), 865 (Nordeuropa), 866 (Kyrillisch), ... |
CMD verboten ?Es ist möglich, die Ausführung von cmd.exe zu verbieten. Davon wird ausdrücklich abgeraten. Manche IT-AdminstratorInnen schränken durch diese und andere als 'paranoid' eingestufte Maßnahmen die Arbeits-Möglichkeiten der User ein. |
Diese Maßnahme kann man mit dem Programm gpedit.msc (Gruppen-Politik)
oder direkt mit dem Registry Editor regedit.exe durchführen. Registry-Schlüssel: HKEY_CURRENT_USER\ Software\ Policies\ Microsoft\ Windows\ System \ DisableCMD
Man kann diesen Schlüssel (auf eigenes Risiko ! und wenn man kann...)
ersatzlos löschen oder die Zahl 0 als Wert eintragen.
|
Konsolen-Befehle und -ProgrammeUnter wenig erfahrenen Windows-AnwenderInnen herrscht oft Unklarheit über die Möglichkeiten der Konsole:• Einige Konsolen-Befehle sind fix in das Programm cmd.exe integriert, z.B. die Core-Befehle cd, copy, date, del, dir, move, rename, type...
• Es gibt zahlreiche Windows Dienstprogramme, die im System-Ordner enthalten sind und nur an der Konsole laufen, z.B. die '16Bit-Programme' chkdsk.exe, help.exe, ipconfig.exe, route.exe, ...
Mit der Eingabe des Programm-Namens an der Konsole wird ein derartiges Programm
ausgeführt.Diese Programme lassen sich zwar auch mit Doppelklick oder mit dem Menübefehl starten, sie schließen jedoch sofort nach ihrem Ende das Fenster und man kann den Ausgabe-Text nicht lesen. Auf der Seite → Systembefehle finden sie Tipps, wie man dieses Verhalten mit Option /K unterbinden und den Text in Ruhe lesen kann. ♦ Liste dieser und anderer Windows-Hilfsprogramme |
• Andere Konsolen-Programme kann man in großer Zahl aus dem Internet laden. Es handelt sich meist um einfache, aber schnelle Hilfsprogramme für erfahrene AnwenderInnen. Microsoft und einige Universitäten bieten dazu ganze → Programm-Sammlungen an. • Man kann Konsolen-Programme *.exe selbst herstellen, vorzugsweise mit der Programmiersprache → C/C++ Das ist relativ aufwändig und daher nur für wenige spezielle Zwecke sinnvoll. Informatik-StudentInnen stellen oft über viele Wochen oder Monate nur solche wenig spektakulär wirkende Programme her. • Mit modernen Programmiersprachen ( → Perl, → PHP) kann man ebenfalls (CLI)-Programme herstellen. Das ist oft ein guter Kompromiss zwischen einfacher Programmierung und schneller Ausführung. Jede Linux Distribution enthält u.a. zahlreiche in Perl erstellte Hilfsprogramme zur Systemverwaltung. |
System-AufrufeMan kann mit allen modernen Programmiersprachen Befehle an die Konsole leiten und auf Wunsch den Ausgabe-Text dieser Befehle lesen, analysieren und verarbeiten. Es ist sogar möglich, Konsolen-Befehle mit Hilfe von 'dynamischen Webseiten' zu erteilen. |
Auf der Seite → Systembefehle finden sie eine kleine Übersicht zu diesem Thema. |
Scripts (Shell-Scripts, Batch-Programme) |
|
| Mit Batch-Programmen kann man im einfachsten Fall mehrere Konsolen-Befehle notieren, unter einem eigenen Namen speichern und bei Bedarf ablaufen lassen. | Darüber hinaus bietet die Windows-Konsole jedoch die Möglichkeiten einer einfachen Programmiersprache, z.B. → Variable, → Verzweigungen, → Schleifen oder → Unterprogramme. |
|
►
Legen sie für ihre Scripts ein eigenes Verzeichnis
an, z.B.
C:\Programme\_prox
►
(Fast) Jeden Befehl der Scriptsprache kann man manuell an der Konsole
eingeben. Die Ausgabe erfolgt ebenfalls auf der Konsole, wenn keine anderen
Anweisungen dazu (Umleitung) erteilt wurden.
|
Manuelle Eingabe:
C:\> dir c:\programme\_prox
► Längere oder komplizierte Befehle, sowie ganze Folgen von Befehlen werden besser in Text-Dateien (Script-Programme) zusammengefasst. |
|
►
Konsolen-Script-Programme erhalten auf Windows die
→ Datei-Erweiterung (file extension) *.cmd
(alte Version *.bat ). Sie sind mit jedem Text-Editor (z.B. Notepad++, notepad.exe) leicht zu bearbeiten. Ein Script enthält Konsolen-Befehle und Anweisungen zu seiner Programm-Kontrolle. Ein Script ist ideal zur Zusammenfassung komplizierter oder häufig verwendeter Befehle zu einem neuen kurzen Befehlswort. |
Text-Datei C:\Programme\_prox\test1.cmd Geben sie diesen Text ein: dir c:\programme\_prox\*.*
Testen sie ihr Script an der Konsole: C:\> c:\programme\_prox> test1.cmd
|
|
►
Alternativ oder zusätzlich kann man auch Scripts in anderen Script-Sprachen
verwenden. Cygwin portiert die professionelle Linux-Shell (zusätzlich zur DOS-Konsole) nach Windows. |
PHP
kann man ausgezeichnet verwenden und mit der Windows-Konsole kombinieren. Vorteil:
PHP-kenntnisse sind weit verbreitet. Perl bietet noch professionellere Möglichkeiten, wird auf Linux massiv eingesetzt. Eine besondere Stärke von Perl ist die Verarbeitung von Texten und Text-Dateien mit → Regulären Ausdrücken. Das ist gleichzeitig eine besondere Schwäche von cmd.exe (Verarbeitung von → Text-Dateien). Mit der Programmiersprache C/C++ kann man binäre (Konsolen)-Programme *.exe selbst herstellen. |
| ► Um ein Script zu starten, geben sie auf der Konsole den Dateinamen des Scripts an. Alternativ lässt sich jedes Script → Zeit-gesteuert vorprogrammieren oder von anderen → Script-Programmen starten. |
So startet man ein Script-Programm manuell:
C:\> c:\programme\_prox> test1.cmd
|
| ► Da dem Betriebssystem die Erweiterung *.cmd als ausführbares Script-Programm bekannt ist ( → Systemvariable PATHEXT), kann man die Erweiterung bei der Eingabe weglassen. |
Start ohne Datei-Erweiterung:
C:\> c:\programme\_prox> test1
|
|
•
Fügen sie der System-Variablen PATH ein
; Trennzeichen und und den Pfad zu ihrem Script-Verzeichnis hinzu. • Kontrollieren sie, ob der Pfad nun im System-PATH enthalten ist. • Mit dieser Einstellung können sie ihre Scripts unabhängig vom gerade "Aktuellen Verzeichnis" einfach aufrufen. ♦ Details zur Einstellung von → Windows Umgebungs-Variablen. |
Einen Pfad zum Systempfad hinzufügen:
C:\> set path=%path%;c:\_prox
Kontrolle:
C:\> path
Nach PATH-Einstellung: Bequemer Aufruf eigener Programme
PATH=C:\Windows;...;...;c:\_prox
C:> test1
C:\_prox> test1 C:\Programme\xyz> test1 D:> test1 |
Namensgebung:Der Hersteller bezeichnet sein Konsolen-Programm meist als "Batch"-Programm, gelegentlich auch als Befehlszeilen-Interpreter (commandline interpreter CLI) oder eher kurios als "Eingabeaufforderung". Offenbar wurde es nie für einen eigenen Produkt-Namen würdig befunden."Batch" bedeutet Stapel-Verarbeitung. Damit wird ausgedrückt, dass die Konsolen-Befehle nicht einzeln (manuell), sondern gemeinsam in einer Script-Datei als Befehls-Stapel in Auftrag gegeben werden. In diesem Web wird es als "Konsolen-Programm" beschrieben. |
Interpreter sind Programme, welche einen Script-Text lesen und "interpretieren": Der Text wird analysiert, die darin gestellten Anweisungen werden ausgeführt. Die Konsole cmd.exe ist ein solches Programm. Andere Beispiele: Die Interpreter der modernen Programmiersprachen → Perl oder → PHP, die in jedem Browser enthaltenen Interpreter für → HTML und → Javascript, der in jedem Kalkulations-Programm enthaltene Interpreter für → VisualBasic, ... Im Gegensatz dazu stehen Compilierte Programme (auf Windows *.exe ) Hier wird der Befehlstext (source) zuerst in Maschinensprache übersetzt, anschliessend entsprechend rascher ausgeführt. Die hohe Geschwindigkeit moderner PC begünstigt Interpreter-Programme: Die einfache Anwendung kann gut genutzt werden, die etwas geringere Geschwindigkeit spielt keine Rolle. |
Script-Kommentare |
|
| Kommentare werden durch das Schlüsselwort rem ( REM, remark) oder einen 2fachen Doppelpunkt eingeleitet. |
rem Das ist ein Kommentar :: Hinweis für EntwicklerInnen |
| Kommentare werden in Scripts als Informationen für ProgrammiererInnen eingefügt. Sparen sie nicht mit sinnvollen Kommentaren - wenn sie das Script nach einigen Monaten ändern wollen, dann macht sich eine kleine Erläuterung meist bezahlt. |
:: Fragen bitte an mich@meinweb.com :: :: Die nächste Zeile enthält den Dateinamen |
|
Kommentare werden auch verwendet, um einzelne Zeilen eines Scripts zeitweise
abzuschalten, z.B. beim Debuggen. Nach dem Test wird die Zeile wieder "aktiviert" - oder gelöscht. ♦ Details zum Thema Kommentare |
rem nächste Zeile abgeschaltet :: @echo off |
Konsolen-Programme aus dem Programm-Menü starten |
|
Start-MenüDas Menüist aus "Verknüpfungen" (Alias, Softlinks) aufgebaut. Im VerzeichnisC:\Dokumente und Einstellungen\User\Startmenü
sind Softlinks zu allen darin angezeigten Programmen enthalten.Ein Softlink ist ein Objekt *.lnk, dessen Datei-Erweiterung normalerweise versteckt wird. Der Link enthält einen Verweis (Angabe des kompletten Pfades) zu einer Datei oder zu einem Verzeichnis. Ein Softlink verhält sich genauso wie die Original-Datei, kann jedoch an jede beliebige Stelle verschoben werden - z.B. auch ins Start-Verzeichnis. ♣ Tipp: Das Start-Menü ist im Original-Zustand ziemlich chaotisch und wird durch Installation weiterer Programme meist bis zur Unbrauchbarkeit kompliziert. Organisieren sie das Startmenü nach eigenen Vorstellungen, fassen sie die enthaltenen Softlinks nach eigenen Programm-Gruppen (Grafik, Internet, ...) zusammen und löschen sie alle nicht benötigten Verzeichnisse und Softlinks. |
Softlink zu einem Programm► Um ein Programm im Start-Menü anzuzeigen rechts-klicken sie die Programm-Datei *.exe des gewünschten Programms und wählen .• Den im gleichen Verzeichnis erstellten Softlink können sie umbenennen und in ein beliebiges anderes Verzeichnis verschieben - z.B. auch in das Verzeichnis des Startmenüs. • Danach erscheint die neue Eintragung im Menü und startet bei Auswahl das betreffende Programm. |
Softlink-Ziel eintragenWenn man den Datei-Namen eines Programms kennt oder wenn es sich um einen → Core-Befehl handelt, dann kann man die Anweisung direkt in die Verknüpfung eintragen:► Suchen sie im Start-Menü nach dem Softlink zur Konsole ("Eingabeaufforderung") und erzeugen sie davon eine Kopie. • Ändern sie den Namen der Kopie, z.B. auf den Namen Notepad • Rechts-Klicken sie den Softlink und zeigen sie die an. Im Feld ist jener Konsolen-Befehl eingetragen, welcher das betreffende Programm startet. Löschen sie die komplette Befehlszeile und ändern sie den Befehl manuell auf notepad
•
Bei Klick auf den Softlink wird das Programm notepad.exe
gestartet.• Alternativ können sie mit Rechtsklick in ein beliebiges Verzeichnis und Befehl einen neuen Softlink erzeugen und in seinen Eigenschaften das eintragen, d.h. den Konsolen-Befehl zum Programm-Start. |
ArgumenteAn fast jedes Programm kan man beim Start Argumente übergeben, das sind zusätzliche Daten zur Steuerung des Programm-Ablaufs.• Argumente werden durch ein Leerzeichen vom Befehl getrennt. • In den meisten Fällen lässt sich als Argument der Pfad zu einer Datei angeben, welche vom betreffenden Programm geöffnet werden soll. ► Erzeugen sie eine kleine Text-Datei C:\test.txt
und ändern sie das Ziel (den Konsolen-Befehl) in ihrem Softlink auf
notepad c:\test.txt
• Bei Klick auf den Softlink wird die angegebene Text-Datei mit dem Editor geöffnet. |
Softlinks zu Konsolen-ProgrammenEin Softlink kann zu jedem beliebigen Programm führen, auch zu einem Konsolen-Programm.► Erzeugen sie eine Kopie des Softlinks zur Konsole (Eingabeaufforderung) oder einen neuen Softlink und ändern sie den Namen auf ipconfig • Rechtsklicken sie den Link und tragen sie als ein cmd.exe /K ipconfig
•
Tragen sie in das Feld "Ausführen in" ein:
C:\
•
Bei Klick auf den Softlink wird ein Konsolen-Fenster geöffnet, ins
Verzeichnis C:\ gewechselt und der
Befehl ipconfig ausgeführt.♦ Details zum Konsolen-Programm ipconfig (Konfiguration des Netzwerk-Interface) im Kapitel → Netzwerke | IPv4 |
Programm cmd.exeKonsolen-Programme können nur in einer Konsole ausgeführt werden, daher wird im Feld immer das Standard Windows Konsolen-Programm cmd.exe eingetragen.Umfangreiche Hilfe zum Programm erhalten sie mit C:\> cmd exe /?
Option /KDiese Option weist die Konsole an, den nachfolgenden Befehl auszuführen, danach das Konsolen-Fenster nicht zu schließen sondern (die Ausgabe der anweisung) anzuzeigen.Das Konsolen-Fenster wird nach Verwendung manuell geschlossen. |
Konsolen-BefehlNach der Option /K wird ein beliebiger Konsolen-Befehl in das Feld des Softlinks eingetragen.• Der Text für den Befehl entspricht genau jenem Text, der zur Ausführung des Befehls in ein bereits geöffnetes Konsolen-Fenster eingetippt wird. • Der Konsolen-Befehl kann selbst Argumente enthalten. Beispiel: Konsolen-Befehl ping zeigt die Verbindung zu einem entfernten PC im lokalen Netzwerk (LAN) an: C:\> ping 192.168.0.5
•
So wird der Befehl in das Feld eines Softlinks eingetragen:
cmd.exe /K ping 192.168.0.5
•
Komplizierte Befehle (Pipes etc.) setzt man in ""
Anführungszeichen, z.B.
cmd.exe /K "ping 192.168.0.5"
Details dazu finden sie in der Hilfe
C:\> cmd.exe /?
|
Script-ProgrammeDie Ausführung von Konsolen-Befehlen durch einen Softlink hat einen Schönheitsfehler: Der Befehlstext selbst wird nicht angezeigt.• Das lässt sich verbessern, wenn man den Befehl in ein ↑ Script-Programm einträgt. ► Erzeugen sie eine Text-Datei, z.B. C:\ipconfig.cmd
und tragen sie den Befehl als Text ein:
ipconfig
•
Legen sie einen Softlink an und tragen sie ihr Script-Programm als
ein
cmd.exe /K c:\ipconfig.cmd
•
Bei Klick auf den Softlink wird ihr Script-Programm ausgeführt. -
Nun wird auch die Befehlszeile selbst angezeigt.• Dieses Konzept lässt sich beliebig erweitern: Man kann in das Script-Programm mehrere Befehle eintragen, → Verzweigungen durchführen, ↑ Kommentare anzeigen usw. |
|
|
Microsoft:
CMD Dokumentation,
PowerShell,
Script Repository
Rob van der Woude: Batch files (en) ss64.com: cmd.exe DOS Tipps NirSoft: Zahlreiche nützliche Konsolen-Programme |
Notepad++
- Ausgezeichneter kostenfreier Editor (auch) für Windows CMD-Scripts
Wikipedia:
command.com
(de,
en = wesentlich umgangreicher),
cmd.exe (de,
en),
Command Prompt,
PowerShell,
Script-Sprachen
|
|