Alle Windows-Kommandos

Liste der Windows-Kommandozeilentools - Kommandos und -Befehle unter MS Windows

Liste der Windows-eigenen Kommandos

dir

Übersicht

Befehl
Kurzbeschreibung
Syntax
Beispiele
     leere Verzeichnisse löschen
     Existiert ein bestimmtes Verzeichnis?
     Dateiname rekursiv suchen
     Status des cmd-Fensters mit Farbe und Titel kennzeichnen


Befehldir
KurzbeschreibungListet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.
Syntax
 
Kommando zum Anzeigen der Hilfe: dir /? 

Listet die Dateien und Unterverzeichnisse eines Verzeichnisses auf.

DIR [Laufwerk:][Pfad][Dateiname] [/A[[:]Attribute]] [/B] [/C] [/D] [/L] [/N]
  [/O[[:]Folge]] [/P] [/Q] [/S] [/T[[:]Zeit]] [/W] [/X] [/4]

  [Laufwerk:][Pfad][Dateiname]
             Bezeichnet Laufwerk, Verzeichnis und/oder Dateien.

  /A         Listet Dateien mit angegebenen Attributen auf.
  Attribute   D Verzeichnisse        R Schreibgeschützte Dateien
              H Versteckte Dateien   A Zu archivierende Dateien
              S Systemdateien        - vorangestellt kehrt die Bedeutung um
  /B         Einfaches Format (keine Kopfdaten, keine Zusammenfassung).
  /C         Zeigt das Tausendertrennzeichen bei Dateigrößen an (Standard-
             einstellung). Verwenden Sie /-C, um das Tausendertrennzeichen
             nicht anzuzeigen.
  /D         Gleich wie Breitformat, jedoch nach Spalten sortiert.
  /L         Verwendet Kleinschreibung.
  /N         Neues, langes Listenformat (Dateinamen auf der rechten Seite).
  /O         Gibt die Liste sortiert aus.
  Folge       N Name (alphabetisch)           S Größe (kleinere zuerst)
              E Erweiterung (alphabetisch)    D Datum/Zeit (ältere zuerst)
              G Verzeichnisse zuerst          - vorangestellt kehrt die
                                                Reihenfolge um
  /P         Pausiert nach jeder vollen Bildschirmseite.
  /Q         Gibt den Besitzer der Datei aus.
  /S         Listet Dateien und alle Unterverzeichnisse auf.
  /T         Bestimmt welche Zeit verwendet wird (nur für NTFS).
  Zeit        C  Erstellung
              A  Letzter Zugriff
              W  Letzter Schreibzugriff
  /W         Verwendet Breitformat für die Auflistung.
  /X         Zeigt die Kurznamen für Dateien mit Nicht-8Punkt3-Namen an.
             Das Format ist das gleiche wie bei /N, wobei der Kurzname vor
             dem Langnamen eingefügt wird. Wenn kein Kurzname vorhanden ist,
             werden Leerzeichen angezeigt.
  /4         Zeigt das Jahr vierstellig an.

Optionen können in der Umgebungsvariablen DIRCMD voreingestellt werden.
"-" vor einer Option setzt die Voreinstellung außer Kraft, z.B. DIR /-W.
Beispiele

leere Verzeichnisse löschen

Man kann das RD-Kommando ansetzen und per Default nicht(!) rekursiv löschen. Der Fehlerkanal wird ins Nul-Device geleitet. Verzeichnisse, die gelöscht werden konnten, werden ausgegeben.
Dann braucht man natürlich noch eine Liste der Verzeichnisse… das geht mit rekursiv mit dir /s und Berücksichtigung der Dateiattribute. Damit tieferliegende Verzeichnisebenen zuerst durchsucht werden, drehen wir einfach die Sortierreihenfolge um.

set startdir="d:\irgendwo\"
FOR /F "tokens=* delims=" %%a in ('dir /AD /B /S "%startdir%" ^| sort /R' ) do (
  RD "%%a" 2>nul && echo ^> %%a
)

s.a. » for » sort

Existiert ein bestimmtes Verzeichnis?

Wiederum kann man dies mit "if exist" prüfen. Genaugenommen prüft exist das Vorhandensein von einer Datei oder aber einem Verzeichnis. Um abzusichern, dass es sich um ein Verzeichnis und eben nicht um eine Datei handelt, kann man auf das Gerät nul zurückgreifen. Dieses befindet sich scheinbar in jedem Verzeichnis:
if exist [Verzeichnis]/nul [auszuführendes Kommando, wenn Datei existiert]

Anbei eine Bat-Datei, die prüft, ob der erste übergebene Parameter ein existierendes Verzeichnis ist:

@echo off
 
if exist %1/nul goto TUWAS
echo ERROR: Verzeichnis "%1" nicht gefunden!
goto ENDE
 
:TUWAS
echo Jepp - das Verzeichnis "%1" existiert... - ich liste es auf:
dir "%1"
 
:ENDE

Eine andere Möglichkeit wäre der Aufruf des dir-Kommandos, wo man mit Hilfe des Parameters /a die gewünschten File-Attribute angibt.
dir /a:d "%1" >nul

s.a. » if

Dateiname rekursiv suchen

Mit einem
dir /s /b [Startpfad/[Dateifilter]]
lassen sich Dateien rekursiv mit kompletten Pfad auflisten.

So kann man mit
dir /s /b %WINDIR%\*.exe
Alle *.exe Dateien auflisten.

Mit einem nachfolgenden findstr lässt sich diese Ausgabe (auch mit Regex) filtern. So z.B. alle .exe-Dateien, die mit "w" beginnen, "p" aufhören, aber nicht im "Download"-Verzeichnis sind:
dir /s /b %WINDIR%\ | findstr "\\w.*p\.exe" | findstr /v "Download"

s.a. » findstr

Status des cmd-Fensters mit Farbe und Titel kennzeichnen

Den Status der Arbeitsgänge kann man mit Hilfe von Bildschirmfarben kennzeichnen, z.B.
  • schwarzer Hintergrund und dunkelgraue Schrift, wenn ein Prozess arbeitet
  • blauer Hintergrund und weisse Schrift, wenn eine Benutzerinteraktion erwartet wird
  • zum Abschluss: grüner Hintergrund = OK oder roter Hintergrund= Fehler
Gerade, wenn ein Prozess länger dauert (Defragmentieren der Festplatte oder ein längeres Backup), braucht man nicht immer ein geöffnetes cmd-Fenster. Mit Hilfe des Title-Kommandos kann vor Start einer Aktion der Titelzeile ein (hilfreicher) Text eingeblendet werden. Dann sieht man selbst bei verkleinertem cmd-Fenster in der Taskleiste, was gerade im Skript passiert.

Das nachfolgende Beispiel-Skript durchsucht rekursiv die Laufwerke (entspr. Variable sDrive) nach Dateien und/ oder Ordnern nach einem regulären Ausdruck im Ordner- und Dateinamen.

@echo off
rem ------------------------------------------------------------
::	CONFIG
rem ------------------------------------------------------------

	set scriptname=Dateisuche

	:: zu durcsuchende Laufwerke
	set sDrives=C D E

	:: Farben
	set colWork=color 08
	set colWait=color 17

rem ------------------------------------------------------------
::	MAIN
rem ------------------------------------------------------------

	%colWork%
	title %scriptname%
	echo xxxxx ORDNER/ DATEI-SUCHE xxxxx
	echo Dieses Skript sucht auf den Laufwerken %sDrives%
	echo Ordner und Dateinamen nach einem angegebenen Muster (Regex moeglich).
	%colWait%
	set /p dmuster=Dateimuster eingeben: 
	if "%dmuster%"=="" exit
	%colWork%
	for %%d in (%sDrives%) do (
		title %scriptname% - durchsuche %%d nach %dmuster% ...
		dir /s /b %%d:\ | findstr "%dmuster%"
	)
	echo fertig.
	title %scriptname% - fertig.
	%colWait%
	pause && exit 

rem ------------------------------------------------------------

s.a. » color » exit » for » if » pause » set » title


Übersicht