Möglichkeiten, Sinn und Benutzung der Command Line/DOS-Box
Diese Seite entstand aus einem Blog-Eintrag vom 2006-07-03.
Für die Diplomarbeit arbeitete ich viel an der Konsole (AKA prompt, MS-DOS-Eingabeaufforderung, command line, "schwarzes Fenster"). Dabei fiel mir wieder mal auf, daß die command line bei einigen Aufgaben extrem viel effizienter ist als die grafische Oberfläche, ja, einige nützliche Dinge sind nur in der Konsole möglich – dennoch können die meisten Nutzer gar nicht damit umgehen oder haben Angst davor. Ich habe mich dafür entschieden, einiges zusammenzuschreiben. Im eigenen Interesse also kurz überfliegen, erkennen was möglich ist, und bei Bedarf Relevantes selbst ausprobieren. Weitere Infos in der Microsoft Command-line reference A-Z.Effizient und bequem nutzbar machen
Die Konsole öffnet man so: WinTaste + R, cmd eingeben, Enter drücken. Mit exit Enter kommt man wieder raus und CLS putzt den Bildschirm. Zunächst die Einstellungen sinnvoll machen: Rechtsklick auf den Fenstertitel (blaue Leiste über dem schwarzen Bereich), Eigenschaften- Layout
- Breite 2x auf 100 bis 130 einstellen (je nach Geschmack)
- Puffer für Höhe auf 800
- Optionen
- QuickEdit-Modus an
- Einfügemodus an
- OK, für alle Fenster dieses Titels
Ein wichtiger Tip, der fürs Ausprobieren der Bsp nicht nötig ist, es aber bequemer macht: Dos Key, ist standardmäßig aktiv. Dessen Befehls-Verlauf erleichtert die Benutzung ungemein; hier die interessanteten Möglichkeiten – nur die fetten Sachen sind für erste Gehversuche wichtig und gelten übrigens auch in vielen Windows-Programmen (siehe auch meine Seite Shortcuts Win) (CTRL ist STRG; Ausschnitt der Dos Key-Seite von Microsoft):
Key or key combination | Description |
UP | Recalls the command you used before the one displayed (1 step into history). |
DOWN | Recalls the command you used after the one displayed. |
LEFT | Moves the insertion point back one character. |
RIGHT | Moves the insertion point forward one character. |
CTRL+LEFT | Moves the insertion point back one word. |
CTRL+RIGHT | Moves the insertion point forward one word. |
HOME | Moves the insertion point to the beginning of the line. |
END | Moves the insertion point to the end of the line. |
ESC | Clears the command from the display. |
F7 | Displays all commands for this program stored in memory in a pop-up box. Use the UP ARROW key and the DOWN ARROW key to select the command you want, and press ENTER to run the command. You can also note the sequential number in front of the command and use this number in conjunction with the F9 key. |
ALT+F7 | Deletes all commands stored in memory for the current history buffer. |
F8 | Displays all commands in the history buffer that start with the characters in the current command. |
Grundsätzliche Regeln
help listet die wichtigsten Befehle mit ganz kurzer Erklärung, mit dem Parameter /? hinter einem Befehl (zB help /? oder more /?) gibt's detaillierte Angaben. Mit help | more wird nach jeder Seite angehalten, Enter für eine Zeile weiter, Leertaste für eine Seite weiter. Übrigens ist | die sog. Pipe, die die Bildschirm-Ausgabe (stdout / standard out) des ersten Programms (hier: help) als Tastatur-Eingabe (stdin / standard in) an das zweite Programm (hier: more) weitergibt. Natürlich kann man den stdout auch in Dateien schreiben, >Dateiname.txt überschreibt die Datei jedes mal, während >>Dateiname.txt hinten anhängt. < liest aus Dateien, wird aber nur selten benötigt. * steht für "beliebige Zahl beliebiger Zeichen" und ? für "genau ein beliebiges Zeichen". Weitere grundlegende Infos im Windows Command shell overview (Pipe etc) bzw. bei Using command redirection operators.Orientieren und bewegen
Ganz links steht das aktuelle Verzeichnis (=Ordner) und das Trennzeichen > zwischen Verzeichnis und Befehl. Sieht etwa so aus C:\> was bedeutet, daß man sich auf Laufwerk C: im Hauptverzeichnis befindet. Verzeichnisse wechseln mit cd.. eins hoch (.. ist das Eltern-Verzeichnis und cd steht für change directory [engl. für Verzeichnis]), mit cd \ nach ganz oben, mit cd d: das Laufwerk wechseln und mit cd VerzName in das Verzeichnis namens VerzName wechseln. TAB (Taste 2 Reihen unter Escape) vervollständigt Datei- und Verzeichnisnamen, also c:\ eintippen und TAB drücken erzeugt z.B. "c:\Dokumente und Einstellungen". Spart sehr viel Schreibarbeit...und geht auch unter Windows (zB bei Dialog Datei-Speichern).Fortgeschritten: Aktuelles Verzeichnis merken mit pushd . (. ist das aktuelle Verzeichnis), dann irgendwo anders hingehen und mit popd wieder zurückkehren (geht auch mehrfach ineinander geschachtelt, ist eine First In-Last Out (FILO) Struktur).
Möglichkeiten
Mit dem bissl Information können wir folgendes machen, was mit der grafischen Oberfläche einfach gar nicht geht, zumindest nicht mit Bordmitteln (keines der Bsp wird etwas verändern, außer dort wo eine entsprechende Warnung steht)- Eine ganze Masse von Dateien umbenennen kann man mit ren *.jpeg *.jpg (Warnung, benennt tatsächlich um)
- subst t: c:\Eigene Dateien\texte sorgt dafür, daß der Ordner über den Laufwerksbuchstaben T: erreichbar ist. Sehr praktisch, weil t: viel schneller getippt / geklickt ist, als ein langer Pfad. Einfach bei jedem Windows-Start automatisch durchführen lassen – den Befehl in eine Datei "c:\MySubst.bat" kopieren und diese mit gehaltenem Rechtsklick auf Start-Programme-Autostart ziehen und "Verknüpfung erstellen" wählen (siehe using batch files oder Beispiel startup.bat) .
- dir *.jpg /s/b > Dateiliste.txt erstellt eine Datei, die alle Dateien mit Endung "jpg" in allen Unterverzeichnissen auflistet (Warnung: Dateiliste.txt wird überschrieben!). Praktisch, um schnell eine Bilderliste zu erstellen, geht natürlich ebenso für Verzeichnisse, PDFs etc. Mit der erstellten Dateiliste kann man natürlich weiterarbeiten, siehe unten. Und schnell kontrollieren kann man sie mit type Dateiliste.txt | more
- sort sortiert Daten – sei es der Inhalt von Dateien oder Bildschirmausgaben von anderen Programmen (mit Pipe). Einfach mal tasklist (aktuell laufende Programme) und tasklist | sort miteinander vergleichen.
- find findet Zeilen mit/ohne bestimmten Zeichen in einem Datenstrom, sehr wichtig als Filter gegen die Informationsflut – zeige z.B.nur die paar Hilfethemen, die "dir" enthalten: help | find /i "dir"
- echo gibt auf stdout aus, was danach folgt, also echo test antwortet mit test. Sehr sinnvoll zum Testen. Ein vorangestelltes @ verhindert, daß der echo-Befehl selbst erscheint – einfach einmal ohne und einmal mit ausprobieren, also echo test und @echo test. Man kann damit auch den Inhalt von Variablen anschauen, zB wer angemeldet ist mit echo %USERNAME%, die Zeit echo %DATE% %time% oder wo temporäre Dateien liegen echo %Temp%. Mehr zu Variablen. Nützlich, um zB mit echo Um %DATE% %time% in %cd% > %Temp%\Dateiliste.txt && dir * /s/b >> >%Temp%\Dateiliste.txt zuerst das Datum und dann die Dateien in die Liste zu schreiben und die Liste bitte da zu lassen, wo sie hingehört: zu den temporären Dateien (Warnung, Dateiliste.txt wird überschrieben). Und schnell kontrollieren kann man sie mit type %Temp%\Dateiliste.txt | more
- Man
kann alle Dateien mit einem
bestimmten Dateinamensmuster vearbeiten, indem man
Schleifen vom Typ for
%f in (2006-07*.txt 2006-06*.*) do @echo %f benutzt,
was natürlich auch rekursiv, d.h. in allen
Unterverzeichnissen, funktioniert: for
/r . %f in
(2006-07*.txt 2006-06*.*) do @echo %f
For kann selbstverständlich mit anderen Befehlen verkettet werden, zB mit && (führe 2. Befehl nur bei gelingen des ersten aus), was dann so aussieht dir *.* /s/b > Dateiliste.txt && for /f %z in (Dateiliste.txt) do @echo tralala %z und vor jeden Dateinamen "tralala" schreibt. Klar, daß man solche Verarbeitungsschritte beliebig schachteln kann, weil man die Ausgabe ja wieder in eine Datei schreiben kann...ja, genau, das ist ziemlich mächtig. Und im normalen Explorer einfach nicht machbar.
Und wofür nutzt man das? @echo %f gibt nur den Dateinamen aus und ist daher nur zum Testen sinnvoll (welche Dateien wären betroffen?). Real (Warnung, die folgenden Befehle verändern den Datenbestand!) würde man z.B. mit copy %f c:\backup\ kopieren, zippen oder mit ren %~pf%~nf.old auf einen Schlag beliebig viele Dateien in den definierten Unterverzeichnissen umbenennen (%~fI ist nur der Pfad, %~nI ist nur der Dateiname ohne Erweiterung, kann auch als %~fnI geschrieben werden). Einfach ein Testverzeichnis mit ein paar Dateien und Ordnern anlegen, help for aufrufen und basteln. - Ein Programm mit Parametern aufrufen, z.B. via explorer "c:\Dokumente und Einstellungen" einen bestimmten Ordner öffnen – geht ähnlich mit Word-Dateien etc pp. Nützlich, wenn beim Start direkt die wichtigsten 10 Sachen geöffnet werden.
- xcopy . ..\kopie\ /e /t dubliziert die Verzeichnisstruktur, also erstellt alle Unterverzeichnisse, die im aktuellen Verzeichnis vorkommen, in ..\kopie, kopiert dabei aber keine Dateien (Warnung, macht wirklich was!). Sehr praktisch, wenn man nur die Struktur, nicht aber die Daten will/braucht (zB für DigiCam-Fotos die Ordner Benannt, Panoramen Originale, schöne Fotos,... pro Ereignis).
- Natürlich läßt sich das alles frei miteinander kombinieren und viele Befehle auf einmal als "Stapel" (deutsch für batch) ausführen – einfach in eine .bat Datei legen (siehe using batch files oder Beispiel startup.bat).
- Übrigens läßt sich alles bis auf sort und subst mit dem Windows-Programm Servant Salamander deutlich bequemer, intuitiver und oft mit Vorschau des Ergebnisses erledigen. Kostet etwas über 20€, die IMHO sehr gut investiert sind (habe ich vor ein paar Jahren gemacht). Vergleich Salamander vs. Windows Explorer (und änlicher Tools wie total commander).
An die Befehlsnamen an sich erinnert man sich sehr bald, weil sie sprechend sind (was machen sort, find, copy wohl??). Auch trotz der langen Erfahrung mit der Konsole benutze ich regelmäßig die Hilfe, um die Details der Befehle nachzuschlagen. Die "komische Schreibweise" der Hilfe empfindet man nach sehr kurzer Zeit als völlig verständlich und extrem praktisch.Created: 2006-08-09; Last modified: Fri, 2015-06-26 09:14 (CEST)
End of File