STARTSEITE --> KURS INFORMATIONSVERARBEITUNG --> 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.
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
- also nach C:\Windows - wechseln. Der Befehl dazu ist cd ..
Der doppelte Punkt gibt also immer das Elternverzeichnis (parent directory) an.
- z.B. nach Spool. Der Befehl lautet cd spool
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
- 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
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.
Verzeichnisse werden mit dem Befehl md oder mkdir angelegt. So erzeugt der Befehl mkdir C:\Test1 auf Laufwerk C: das Verzeichnis "Test1".
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.).
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.
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.
Verzeichnisse werden mit rd oder rmdir gelöscht. Allerdings lassen sich so nur leere Verzeichnisse löschen.
Vorsicht, wenn Sie 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.
Aber Vorsicht dabei geht wirklich alles verloren, was in den entsprechenden Bäumen abgelegt ist!Verwendung: rmdir /s C:\Test1
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:
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 + <)
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.
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:
Letzte Aktualisierung 30.11.2024 | |
© by Stefan Klebs (2004-2024) (für den Kurs 2002-2024) |