Startseite --> Kurs Informationsverarbeitung --> Modul B: Administration --> Lektion 5: Arbeiten mit der Kommandozeile / Scripting

Modul B: Administration

Lektion 5: Arbeiten mit der Kommandozeile / Scripting

Gerade wenn es darum geht Aktionen wieder und wieder auszuführen, für viele Dateien oder auf vielen Rechnern oder immer wieder im Hintergrund als geplante Aufgabe, kann es hilfreich sein, dies nicht mit der Maus in der grafischen Oberfläche zu tun, sondern mit Shellbefehlen oder in Scripts. Microsoft hat jüngst seine Server-Core-Installation, die ohne grafische Oberfläche auskommt, sogar zum Standard erhoben. Mit Windows Powershell ist zudem ein mächtiger großer Bruder an diese Seite der guten alten Kommandozeile getreten, der sogar tiefe Systemänderungen, wie das Hinzufügen oder Entfernen von Funktionen erlaubt.

Die Command-Line oder Eingabeaufforderung (so wird die Kommandozeile auch bezeichnet), ist zunächst einmal ein schwarzer Bildschirm. Dass man - die Kenntnis der richtigen Befehle vorausgesetzt - damit ein mächtiges Mittel zur Systemadministration zur Seite stehen hat, erkennt man erst nach einiger Zeit. Früher kannte man die Command-Line auch als DOS-Ebene, da die Standardoberfläche unter DOS nicht immer grafisch war. (DOS= Diskette Operating System; PC-Betriebssystem der 80er und frühen 90er Jahre, war bis Windows Me noch immer Teil von Windows).

Die Command-Line startet man entweder über den Eintrag "Ausführen.." im Startmenü mit dem Befehl cmd oder über "Start --> Programme --> Zubehör --> Eingabeaufforderung". So und dann kann es eigentlich auch schon los gehen. Wenn alles richtig gelaufen ist, sieht man nun ein Fenster mit schwarzem Grund und grauer Schrift. (Die Farben lassen sich aber auch anpassen...)
Zunächst sollte oben die Windows-Version und das entsprechende Copyright stehen. Darunter steht im Normalfall C:\Windows\System32>_, also der aktuelle Pfad. Diese Zeile - oder um genau zu sein nur das > (Größer-Zeichen) - bezeichnet man als "prompt". Jede Eingabe ist mit der Return/Entertaste (daher heißt sie auch "Eingabetaste") zu bestätigen! Was genau zu sehen ist, lässt sich mit dem Befehl prompt einstellen, wobei der Befehl prompt ohne Parameter wieder den Standard anzeigt. Um zu erfahren wie Befehle eingesetzt werden können ist der entsprechende Befehl mit der Option /? zu starten. Alle Einstellungsmöglichkeiten lassen sich also mit prompt /? anzeigen. Einfach ausprobieren!
Ach ja: Der Befehl cls (Clear Screen) löscht den Bildschirm und exit beendet die Eingabeaufforderung und kehrt zu Windows zurück.

5.1. Laufwerke und Verzeichnisse

5.1.1. Navigieren

Soll das Laufwerk gewechselt werden zum Beispiel von C:\ nach D:\ so ist einfach D: einzutippen.

Wie oben schon beschrieben, gibt der Prompt, den gegenwärtigen Pfad an, im obigen Beispiel befindet man sich also im Verzeichnis Windows\System32 auf Laufwerk C:
Die Navigation läuft größtenteils über den Befehl cd (change directory). Vom Verzeichnis C:\Windows\System32 ausgehend können wir nun

a. eine Ebene höher

- also nach C:\Windows - wechseln. Der Befehl dazu ist cd ..
Der doppelte Punkt gibt also immer das Elternverzeichnis (parent directory) an.

b. eine Ebene tiefer wechseln

- z.B. nach Spool. Der Befehl lautet cd spool

c. in ein Nachbarverzeichnis wechseln

Hier käme zum Beispiel C:\Windows\Drivers in Frage. Dazu müssen wir eine Kombination der beiden Befehle aus a) und b) anwenden.
Korrekt ist also cd ..\Drivers

d. oder direkt in ein anderes Verzeichnis

- z.B. C:\Programme- wechseln. Dazu muss der gesamte (=absolute) Pfad (also mit Laufwerksbuchstaben) eingegeben werden. In diesem Fall ist cd C:\Programme richtig. Im vorstehenden Beispiel hat also der Befehl
cd ..\..\Programme die gleiche Funktion wie cd C:\Programme

e. oder den Verzeichnisinhalt anzeigen

Um sich nun den Verzeichnisinhalt anzeigen zu lassen benötigt man den Befehl dir. Ohne Parameterangabe hat der Befehl jedoch den Nachteil ein sehr großes Verzeichnis durchlaufend (ohne am Ende der Bildseite anzuhalten) anzuzeigen. Daher ist es sehr sinnvoll den Befehl so: dir /p (pages) zu verwenden. Dieser zeigt den Inhalt seitenweise an. Die Option /s (subdirectories) durchsucht auch Unterverzeichnisse. In der Powershell kann alternativ der Unixbefehl ls eingesetzt werden.

5.1.2 Dateioperationen

a. Verzeichnisse anlegen

Verzeichnisse werden mit dem Befehl md oder mkdir angelegt. So erzeugt der Befehl mkdir C:\Test1 auf Laufwerk C: das Verzeichnis "Test1".

b. Dateien kopieren

Um eine Datei zu kopieren benutzt man den Befehl copy oder xcopy. Die Syntax sieht folgendermaßen aus: copy filea fileb  oder auch copy C:\Windows\filea C:\Programme\fileb. Der Befehl xcopy kann gleich eingesetzt werden, bietet aber noch einen erweiterten Parametersatz (z.B. Quell- und Zieldatei-Vergleiche, beibehalten von Zeitstempeln etc.).

c. Dateien und Verzeichnisse verschieben und umbenennen

Zum Verschieben und Umbenennen einer Datei steht der Befehl move zur Verfügung.
move C:\Windows\filea C:\Programme\ verschiebt die Datei "filea".
move C:\Windows\filea C:\Programme\fileb verschiebt die Datei "filea" und benennt sie dabei nach "fileb" um.

move C:\Test1\ Test2 bennent das Verzeichnis "Test1" nach "Test2" um.

move C:\Windows\filea fileb benennt die Datei "filea" in "fileb" um.

Alternativ kann eine Datei (keine Verzeichnisse) auch mit den Befehlen ren und rename umbenannt werden. Allerdings kann sie dabei nicht in ein anderes Verzeichnis oder auf ein anderes Laufwerk verschoben werden! Die Syntax ist: ren filea fileb.

d. Dateien löschen

Dateien löscht man mit dem Befehl del (delete). Mit der Option /s werden bestimmte angegebene Dateien auch in allen Unterverzeichnissen gelöscht.

Beispiel: del /s *.txt löscht alle Textdateien im aktuellen und allen Unterverzeichnissen.

Der Befehl erase ist identisch.

e. Verzeichnisse löschen

Verzeichnisse werden mit rd oder rmdir gelöscht. Allerdings lassen sich so nur leere Verzeichnisse löschen.

Information Verzeichnisse samt Inhalt löschen

Werden die Befehle rd oder rmdir mit der Option /s verwendet, so werden dadurch auch alle Inhalte (Unterverzeichnisse und Dateien) mitgelöscht.

Icon: StopAber Vorsicht dabei geht wirklich alles verloren, was in den entsprechenden Bäumen abgelegt ist!

 

 Verwendung: rmdir /s C:\Test1

5.2 Befehle

An der Kommandozeile arbeiten Sie mit Befehlen. Einige davon haben Sie bereits eben kennengelernt, als wir Dateien kopiert oder umbenannt haben. Es gibt eine Reihe guter und sehr umfangreicher Befehlsreferenzen, die abertausende Befehle enthalten. Nicht alle Befehle müssen über die Tastatur (Standard-In) eingegeben werden, Sie können zum Beispiel auch über eine Eingabe aus einer Datei erfolgen. Als Standard-Out wird die gewöhnliche Ausgabe eines Befehls bezeichnet, zum Beispiel wenn Sie den Verzeichnisinhalt von C:\Test1 anzeigen lassen. Dabei ist die Ausgabe von dir Standard-Output (nämlich der Verzeichnis-Inhalt). Als Standard-Error wird die außergewöhnliche Ausgabe eines Befehls bezeichnet, zum Beispiel dann, wenn Sie den Verzeichnisinhalt von C:\Test1 anzeigen lassen, aber das Verzeichnis nicht existiert. Die Ausgabe sieht folgendermaßen aus:

5.2.1 Ausgaben und Eingaben umleiten

Sowohl Standard-Out als auch Standard-Error gehen normalerweise an den Monitor, sodass es bis hierher keinen Unterschied macht, welchen Nachrichtenkanal das System benutzt. Dies ändert sich dann, wenn man z.B. einen lang laufenden Job über Nacht anstößt und morgens das Ergebnis sehen möchte. Dann wird es auf einmal wichtig Fehler von normalen Systemmeldungen zu unterscheiden. Daher kann man sämtliche Ausgaben z.B. in Dateien umleiten. Dazu benötigt man diese Zeichen:

Will man die Dateien nicht bei jeder Ausgabe wieder neu beschreiben lassen, sondern die neue Meldung hinten anhängen, kann man dazu >>  oder  2>>  benutzen. Wenn ich also den obigen Befehl erneut aufrufe:
dir C:\test1 und ihn um folgendes ergänze > C:\Ausgabe.txt 2> C:\Fehler.txt, werden alle Standard-Outs werden in die Datei C:\Ausgabe.txt , alle Fehlermeldungen aus Standard-Error werden in die Datei C:\Fehler.txt geschrieben.

Ich kann jedoch auch den Inhalt einer Datei "einlesen" um einen Befehl mit externen Eingaben zu versorgen. Dazu verwendet man dieses Zeichen: <

Beispiel: In meiner Datei C:\folders.lst habe ich eine Liste von Verzeichnissen gepflegt, die ich regelmäßig nach bestimmten Dateien durch suchen will. Beispiel für einen Eintrag dieser Liste könnte sein: C:\Windows\*.tmp, C:\Temp\*.*, C:\Dokumente und Einstellungen\Stefan\Temporary Internet Files. Nun möchte ich diese temporären Dateien löschen und brauche dazu lediglich del < C:\folders.lst einzugeben und schon wird die komplette Liste abgearbeitet. Dies hat vor allem bei Batch-Dateien (mehr dazu unter Stapelverarbeitung) den Vorteil, dass ich solche Listen nicht im Script hart verdrahten muss, sondern eine solche Datei erstellen kann, die dann auch noch von allen Usern gepflegt werden könnte.

Gibt nun ein Befehl eine sehr lange Ausgabe aus, so kann ich diese zur Bearbeitung an einen weiteren Befehl weiterleiten. Das Symbol dazu ist die so genannte Pipe " | " (AltGr + <)

5.2.2. Scripting erlauben

Mit Scripts ist es möglich komplexeste Vorgänge zu automatisieren oder in Abhängigkeit von Benutzereingaben unterschiedlich ablaufen zu lassen. Shellprogrammierung oder Scripting kann daher an dieser Stelle nur angerissen werden. Die gesamte Modulreferenz von Microsoft zur PowerShell befindet sich unter: → https://technet.microsoft.com/en-us/library/hh847741.aspx.

Microsoft kennt mehrere Möglichkeiten des Scriptings, einmal über klassische CMD/BAT (batch input)-Dateien vorzunehmen oder über PowerShell-Scripts. Wichtig ist bei der Benutzung von PowerShell-Scripts, dass das System sie nur ausführt, wenn Sie entwedern von Microsoft signiert oder Sie im System mithilfe des PowerShell CMD-Lets

Set-ExecutionPolicy -ExecutionPolicy -- RemoteSigned

erlaubt sind. Anstelle von RemoteSigned könnte auch Unrestricted stehen, was jedoch ein Sicherheitsrisiko darstellt.

5.2.3 Abfragen in Scripts noch nicht verfügbar.

Wenn Sie eine Entscheidung, ob ein Befehl ausgeführt werden soll immer an der selben Stelle benötigen, können Sie jedoch noch immer den Befehl CHOICE in die Batchdatei einfügen. Der Befehl, der in der Batchdatei dahinter steht wird nur nach Bestätigung mit [Y/N] ausgeführt.

Eine komplettes Batch-Tutorial finden Sie unter der Internetadresse:
http://antonis.de/dos/batchtut/index.htm

Eine weitere Interessante (wenn auch nicht besonders ansprechend gestaltete) Seite zu MS-DOS und Batchverarbeitung ist die Folgende:
→ http://www.uni-bonn.de/~uzs180/mpdokger.html


Quellenangaben:

zurück zur Lektion 4 "Laufwerksverwaltung und Wartung"

weiter zur Lektionsübersicht Modul B

 

Letzte Aktualisierung 02.01.2018 
© by Stefan Klebs (2004-2018) (für den Kurs 2002-2018)

Sitemap - Impressum - Über mich - FAQ - Rechtliche Hinweise