Kommandozeile
/Kommandozeile

TechNet, das Microsoft TechCenter

Unter der Adresse http://technet.microsoft.com/en-us/library/bb490890.aspx listet Microsoft in seiner Command-line reference praktisch alle Befehle, die direkt in die Eingabeaufforderung oder direkt unter Start/Ausführen... eingegeben werden. Derartige Befehle wurden früher zu DOS-Zeiten, also unter Betriebssystemen, die keinerlei GUI zur Verfügung stell((t)en, regelmäßig ausgeführt, um Dateien zu “beherrschen”. Ein schönes Beispiel für die Syntax lässt sich bei Xcopy finden:

Xcopy

Copies files and directories, including subdirectories. Zu deutsch: Kopiert Dateien und Verzeichnisse, inklusive Unterverzeichnisse.

Syntax

xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [ /e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z ]

Parameter

Die Parameter werden entweder als Begriff (“Source”) oder als Zeichen (“p”) mit einer Parameterkennung (“/”) versehen. Meistens ist die Reihenfolge der Parameter frei. Aber es empfiehlt sich, die angegebene Reihenfolge einzuhalten, um ganz sicher zu gehen, dass es keinerlei Vorgaben gibt. Jeder einzelne Parameter soll im Folgenden erläutert werden, insbesondere, um die stilistischen, typografischen Besonderheiten hervorzuheben:

Parameter

Bedeutung

Erläuterungen

Source

Definiert Ort und Name der Datei, die kopiert werden soll. Parameter muss einen Laufwerksbuchstaben oder eine Pfadangabe enthalten.

Es wird unterstellt, dass der User weiß, wie man Laufwerksbuchstaben und/oder Pfade angibt. Tatsächlich ist dies natürlich auch definiert:
Jede Partition und jedes physikalische Speichermedium (also Festplatte, USB-Festplatte, USB-Speicherstick, DVD-Laufwerk) unter Microsoft Betriebssystemen erhält einen Buchstaben. Dabei wird meistens - beginnend bei C: für die erste Partition der Festplatte - der nächstfolgende vergeben, bis das Alphabet voll ist, was heutzutage durchaus schnell passieren kann, denn auch jeder Pfad in einem Netzwerk kann mit einem Buchstaben versehen werden. Moderne Betriebssysteme möchten dem User diese Arbeit gerne abnehmen und verwalten daher bestimmte Bereiche auch unter einem Namen. Klassisch (unter Windows) ist z.B. “Eigene Dateien” als Name für einen bestimmten Pfad. Wer sich jedoch intensiver mit der Aufteilung und Struktur seiner Daten befasst, wird anstelle der Pseudonamen gerne auch den echten Speicherort in Erfahrung bringen wollen.

Destination

Definiert das Ziel und den Namen der Datei, die kopiert werden soll. Der Parameter kann einen Laufwerksbuchstaben (inklusive Doppelpunkt), ein Verzeichnis, einen Dateinamen oder eine Kombination aus diesen enthalten.

Die eckige Klammer drückt aus, dass der Parameter optional ist, also grundsätzlich auch weggelassen werden kann.
Zur Schreibweise des Laufwerksbuchstabens siehe Erläuterungen unter Source.
Ein Pfad wird relativ oder absolut angegeben und mit Backslashes zwischen den verschiedenen Verzeichnissen gekennzeichnet. Relative Pfade beziehen sich auf den aktuellen “Standort” des Users, also von wo aus er das Kommando gesendet hat. Mit “..” (zwei Punkten) begibt man sich eine Verzeichnisebene höher (in Richtung Root), mit “.” (ein Punkt, selten verwendet) bleibt man auf der aktuellen Verzeichnisebene stehen. Ein Beispiel:
..\..\UserA\Dokumente\
Gehe vom aktuellen Standort eine Ebene höher, dann noch eine Ebene höher, dann ins Verzeichnis “UserA”, dann ins Verzeichnis “Dokumente”.

/w

Zeigt die folgende Nachricht und wartet auf deine Reaktion, bevor der Kopiervorgang gestartet wird.
“Press any key to begin copying file(s)”

Benutzereingaben sind oftmals das einzige Mittel, um als User zu interagieren. Ansonsten führt das Betriebssystem das Kommando ohne weitere Erklärung aus.
Wie fast alle folgenden Parameter, ist auch dieser optional. Falls das Feature also nicht genutzt werden soll, lässt man den Parameter einfach weg.

/p

Fragt bei jedem Kopiervorgang nach einer expliziten Bestätigung seitens des Users.

Insbesondere, weil mit diesem Kommando auch mehrere Dateien auf einmal kopiert werden können, ist es ganz hilfreich, jedes Mal gefragt zu werden: “Soll die Datei xy kopiert werden?”. Der User muss nun Y für Ja oder N für Nein auf der Tastatur eingeben.

/c

Ignoriert Fehlermeldungen.

Für Kenner ist es ganz angenehm, evtl. Fehlermeldungen zu unterdrücken. Nicht so erfahrene User sollten diesen Parameter nicht ausschalten/weglassen.

/v

Verifiziert jede Datei nach dem Kopieren, indem sie sie mit der Quelldatei auf Übereinstimmung vergleicht.

Stellt sicher, dass die Kopie wirklich mit dem Original übereinstimmt. Sehr selten können Kopierfehler resultieren, die man mit einem solchen Parameter vermeiden kann.
Windows XP kennt diesen Parameter nicht!

/q

Unterdrückt die Anzeige von xcopy-Meldungen.

Ähnlich wie meine Erläuterungen zu /c besagen, sollte man erst mit gewisser Erfahrung Meldungen unterdrücken. xcopy-Meldungen können z.B. auch Erfolgsmeldungen sein.

/f

Zeigt Quell- und Zieldatei während des Kopiervorgangs an.

Ganz hilfreich, um zu sehen, was das gerade passiert. Andererseits geht das manchmal so schnell, dass man sowieso nichts lesen kann.

/l

Zeigt eine Liste von Dateien an, die kopiert werden sollen.

Man kann mit so genannten Platzhalterzeichen mehrere Dateien geschickt zusammenfassen. Ein “*” (Sternchen, Asterisk) steht für “beliebig viele beliebige Zeichen”, einfach gesagt also für “alles”. Mit “*.*” werden also sämtliche Dateien im aktuellen Verzeichnis erfasst. Mit *.doc würde man sämtliche Dateien mit der Endung “.doc” erfassen.
Mit dem Platzhalterzeichen “?” (Fragezeichen) wird genau ein Zeichen an genau dieser Stelle als beliebig interpretiert. Mit “Me?er.*” erfasst man also alle Dateien, wie “Meier.doc, Meyer.xls, Meter.dat” usw. Man kann auch mehrere Fragezeichen geschickt miteinander kombinieren.

/g

Erzeugt unverschlüsselte Zieldateien.

Ich muss gestehen, dass ich hiermit nichts anfangen kann.

/d[:mm-dd-yyyy]

Kopiert Quelldateien die gleichaltrig oder jünger sind als das angegebene Datum. Lässt man den optionalen Part mit dem Datum weg, so werden nur Quelldateien kopiert, die jünger sind als die gleichnamigen Dateien im Zielverzeichnis.

Eine interessante Anwendung für ein manuelles Backup! Alle Dateien könnten bereits von der letzten Datensicherung bereits im Zielverzeichnis vorhanden sein. Ohne Angabe eines Datums wird durch den Parameter /d jedoch jede neuere Datei ins Backup-Verzeichnis kopiert.

/u

Kopiert nur die Dateien, die bereits im Zielverzeichnis existieren.

Bietet elegante Möglichkeiten, Dateien zu aktualisieren, ohne diese explizit auswählen zu müssen.

/i

Falls die Quelle ein Verzeichnis ist oder Wildcards (*, ?) enthält und das Ziel nicht existiert, dann erstellt xcopy mit diesem Parameter ein neues Verzeichnis und kopiert alle selektierten Dateien in dieses neue Verzeichnis. Standardmäßig fragt xcopy, ob das angegebene Ziel ein Verzeichnis oder eine Datei ist.

i wie ignore verification
Wenn dieser Parameter verwendet wird, dann wird Xcopy das angegebene Ziel als Verzeichnis interpretieren, wenn in der Quelle mehr als eine Datei vorkommen.

/s

Kopiert alle Verzeichnisse und Unterverzeichnisse, es sei denn, sie sind leer. Ohne diesen Parameter arbeitet xcopy nur mit einem Verzeichnis.

Lässt sich doch schön verwenden, um unerwünschte Unterverzeichnisse (s wie subdirectory) auszuschließen, ohne dass man erst checken muss, ob man überhaupt welche hat.

/e

Kopiert alle Unterverzeichnisse, auch wenn sie leer sind. Verwende /e mit /s und /t Parameter.

e wie empty

/t

Kopiert die Baumstruktur aus Unterverzeichnissen, d.h. es wird dieselbe Unterverzeichnisstruktur wie im Quellverzeichnis angelegt. Um leere Unterverzeichnisse in der Struktur anzulegen, muss /e zusätzlich verwendet werden.

t wie tree

/k

Kopiert Dateien und erhält den Schreibschutz (read-only) im Ziel. Standardmäßig (ohne diesen Parameter) wird beim Kopieren jedes read-only Flag entfernt.

 

/r

Kopiert schreibgeschützte Dateien.

r wie read-only

/h

Kopiert versteckte Dateien, wie Systemdateien.

h wie hidden

[{/a|/m}]

Kopiert nur Quelldateien, bei denen das Archiv-Flag gesetzt ist. Bei /a wird das Archiv-Flag bei der Quelldatei nicht verändert.
Bei /m wird das Archiv-Flag der Quelldatei entfernt, sodass die Datei beim nächsten Mal nicht zum Kopieren herangezogen wird.

a wie archive, m wie move archive flag

Sehr nett, wie hier mit Command-Parametern jongliert wird. die eckigen Klammern außenrum deuten an, dass alles optional ist, was hier steht. Die geschweiften Klammern fassen eine Menge zusammen, aus der ein Element/Parameter zu wählen ist. Das Trennzeichen | (Pipe) trennt die Parameter. Im Konkreten also: Wenn du diesen Parameter überhaupt verwenden willst, dann wähle /a oder /m, aber niemals beide!

/n

Kopiert Verzeichnisse und gibt ihnen den Kurznamen aus dem klassischen FAT System, also in der 8.3 Nomenklatur.

n wie NTFS, obwohl das sehr irritiert, denn gerade NTFS kann locker mit “beliebig” langen Datei- und Verzeichnisnamen umgehen. Aber NTFS verwaltet zusätzlich auch immer einen auf 8 Zeichen plus 3 für die Erweiterung gekürzten Namen. Dieser Kurzname wird für die Kopie verwendet, unabhängig davon ob das Ziel unter FAT oder NTFS formatiert ist.

/o

Kopiert Informationen über den Benutzer und DACL (discretionary access control list)

Zusätzlich zu den allgemein sichtbaren Eigenschaften und Attributen gibt es weitere über den Besitzer einer Datei. Diese Informationen werden hierüber ebenfalls kopiert.

/x

Kopiert Dateiüberwachungseinstellungen, die in /o stehen.

 

[/exclude:file1[+file2]][+file3]]

Sammelt eine Liste von Dateien, die nicht kopiert werden sollen.

Hier ist eine sehr schöne Verschachtelung von optionalen Parametern zu sehen. Der gesamte Befehl ist optional, wenn er aber verwendet wird, dann muss ein Doppelpunkt folgen und eine Datei (file1) genannt werden, die auszuschließen ist. Eine weitere Datei kann optional zu dieser Ausschlussliste hinzugefügt werden, dann aber mit einem Plus-Zeichen an die vorhergehende Datei angehängt. Und das geht sogar noch eins weiter mit einer optionalen dritten Datei.
Geschickt wird es, wenn die Dateien über Fragmente ihrer Namen zusammengefast werden: “\Obj\” schließt alle Dateien unterhalb des Obj-Verzeichnisses aus. “.obj” schließt sämtliche Dateien mit der Erweiterung .obj aus.

[{/y|/-y}]

Unterdrückt bzw. forciert eine Bestätigung für jeden Kopiervorgang.

Natürlich kann man nur einen dieser beiden Parameter verwenden, entweder /y, um jede Frage nach Überschreiben positiv zu bestätigen (y wie yes), oder /-y, um sich jede einzelne Datei vor dem Kopieren bestätigen zu lassen, wenn im Ziel eine Datei gleichen Namens bereits besteht. Bei einer Datensicherung in ein vorhandenes Verzeichnis kommt es oft vor, dass man ja nur neuere Dateien kopieren will, aber dadurch liegt eine ältere Version ja trotzdem vor und will bewusst überschrieben werden.

Auffällig ist, dass hier Slash und Minus zusammen verwendet werden! Dies jedenfalls entnehme ich der Beschreibung auf der Microsoft-Seite. Meistens kann man sich als User aussuchen, ob man einen Parameter mit / oder mit - an einen Befehl anhängen will. Hier muss offensichtlich beides zusammen verwendet werden.

/z

Kopiert Dateien in einem Modus, der einen Neustart ermöglicht.

So ganz klar ist mir dieser Befehl nicht, aber er wird z.B. in Netzwerken gebraucht.

Textauszeichnungen und Formatierungen

Nicht nur Microsoft verwendet besondere Formatierungen, um den Charakter eines Parameters oder Befehls zu verdeutlichen. Hier einige Beispiele:

Italic, kursiv

Zwingend erforderliche Angabe

Bold, fett

Element, das exakt in der angegebenen Schreibweise getippt werden muss

Ellipsis, Punkte ...

Parameter, der mehrfach in der Kommandozeile wiederholt werden kann

Brackets, eckige Klammern [ ]

Optionale Parameter

Braces, geschweifte Klammern { }

Satz von Auswahlmöglichkeiten, wovon der User genau einen Parameter wählen kann. Die einzelnen Auswahlmöglichkeiten sind durch das Pipe-Symbol | voneinander getrennt.

Courier

Code bzw. Programmausgabe

Ab hier weiterhin Baustelle

Hier möchte ich demnächst “Normen”, Empfehlungen oder sonstige Hinweise platzieren, die sich mit der typografischen Auszeichnung von Kommandozeilen-Befehlen befassen.

Last modified: 01.11.2016