Kommandozeilentools

CMD.exe (Kommandozeile, Eingabeaufforderung):

CMD ist die Standard-Shell für die meisten Kommandozeilenprogramme. Das heißt: Zunächst muss Cmd.exe gestartet werden, erst dann kann am blinkenden CMD-Prompt

das gewünschte Tool aufgerufen werden. Die CMD enthält zudem zahlreiche eigene, interne Befehle (wie DIR, DEL, REN, FOR etc.).

Neben der angegrauten Cmd.exe, die Microsoft seit mehr als 10 Jahren nicht mehr ernsthaft weiterentwickelt hat, eignet sich auch jeder andere Command Prompt für den Start der beschriebenen Tools, so etwa die Windows-Poewershell (Powershell.exe), die Cygwin Bash oder die Produkte 4NT, Take Command, TCC/LE (letzteres kostenlos) von JPSoft.

Bei den nachfolgend genannten oder verlinkten Tools handelt es sich ausschließlich um Werkzeuge, die mehr leisten als die Windows-Funktionen der grafischen Benutzeroberfläche.
_________________________________________

Clip.exe (Kopie in die Zwischenablage)

Clip schreibt das Ergebnis eines Kommandozeilenbefehls statt auf die Konsole in die Windows-Zwischenablage.
dir | clip
Das Ergebnis dieses Dir-Befehls kann dann mit [Strg]-[V] oder „Bearbeiten, Einfügen“ in jedes Windows-Programm übernommen werden. Das winzige Tool ist weitgehend entbehrlich.
_________________________________________

Cipher.exe (Hilfsprogramm zur Dateiverschlüsselung)

Cipher ist das Kommandozeilentool für die NTFS-eigene Datei- und Ordnerverschlüsselung. Diese Verschlüsselung (EFS – Encrypted File System) ist bei höherwertigen Windows-Versionen seit Windows 2000 und XP Pro über die Datei-/Ordnereigenschaften bequem im Explorer zu erreichen. Nicht so bei den Home-Versionen. Hier konnte unter XP Home das Cipher-Tool einspringen:

cipher /e *.*
cipher /d *.*

Der erste Befehl verschlüsselt alle Dateien im aktuellen Ordner, der zweite entschlüsselt sie wieder. Mit Schalter /S ist das Ganze auch auf Unterverzeichnisse auszuweiten. Leider gilt das nicht mehr für Windows 7, Vista und (voraussichtlich) 8. Cipher verweigert sich hier mit der Meldung „Die Anforderung wird nicht unterstützt.“ Der EFS-Systemdienst läuft zwar auch in den Home-Varianten, Cipher ist aber reduziert auf das Entschlüsseln und damit auf eine rein passive Rolle.
_________________________________________

Compact: Zielgenaue Dateikomprimierung

Compact ist das Kommandozeilentool für die NTFS-eigene Datei- und Ordnerkomprimierung. Die NTFS-Komprimierung ist über die Datei- und Ordner-Eigenschaften im Explorer zu erreichen – unter „Eigenschaften –> Allgemein –> Erweitert“. Aber ähnlich wie bei Cipher ist es effizienter, gut komprimierbare Formate mit Compact zu bearbeiten:

compact /c /i /s:%userprofile% *.bmp *.doc? *.xls? *.rtf *.txt *.htm?

Dieses Beispiel bearbeitet die ausgewählten Dateitypen im gesamten Benutzerordner.

_________________________________________

Convert: Umwandung des Dateisystems

Convertist unentbehrlich, wenn Sie eine FAT-formatierte Partition zu NTFS umwandeln wollen. Die Datenträgerverwaltung beherrscht diese Aufgabe nicht. Nach

convert [Laufwerk]: /FS:NTFS /V

startet die Konvertierung entweder im laufenden Betrieb oder wird für den nächsten Neustart geplant (natives Autoconv.exe vor dem Windows-Start). Statt [Laufwerk] geben Sie den korrekten Buchstaben des Laufwerks an.

_________________________________________

Devcon.exe: Gerätemanager auf der Kommandozeile

Braucht man wahrscheinlich selten und ist daher kaum hinreichend dokumentiert. Im Prinzip erledigt Devcon alles, wozu im Normalfall der grafische Gerätemanager (devmgmt.msc) zuständig ist.

Nützlich ist Devcon als Workaround, wenn eine Hardware nicht ordnungsgemäß initialisiert wird. In meinem Beispiel war es die HDMI-Audio-Ausgabe an das TV-Gerät. Die musste ich immer händisch im Gerätemanager aktivieren. Mit

devcon list *

kann man sich die gesamte Hardware inklusive Geräte-ID anzeigen lassen. Die ID ist wichtig, um dann das Gerät gezielt anzusprechen (Beispiel):

devcon enable "@HDAUDIO\FUNC_01&VEN_10DE&DEV_ 0094&SUBSYS_10DE1F82&REV_1001\5&2109403F&0&0001"

Das Ganze lässt sich dann als Batchdatei und danach als Verknüpfung dazu ablegen, die unter „Eigenschaften -> Erweitert“ Administratorrecht anfordert (zwingend bei Devcon-Aktionen). Damit ist die Fummelei im Gerätemanager auf zwei Mausklicks reduziert (und ließe sich mit Schtasks.exe auch vollständig automatisieren).

Dism.exe (Deployment Image Servicing and Management Tool)

Dism mountet (lädt) den Inhalt von WIM-Dateien (Windows Images) in ein beliebiges (leeres) Verzeichnis und schreibt Änderungen danach wieder in das Windows-Image zurück. Es ist damit das Standardwerkzeug für angepasste OEM- oder Firmen-Setups von Windows 7 oder Windows 8 sowie für angepasste Notfallsysteme (WinPE).

Dism gehört unter Windows 7 und Windows 8 zum installierten Standardrepertoir. Es muss auf der Kommandozeile Cmd.exe aufgerufen werden und arbeitet dort nur, wenn die Cmd.exe mit Administrator-Rechten gestartet wurde.

Die beiden wichtigsten Befehle lauten (Beispiel):

DISM.exe /Mount-Wim /Wimfile:D:\sources\install.wim /index:1 /Mountdir:C:\Win8
DISM.exe /Unmount-Wim /Mountdir:C:\Win8 /commit

Der erste Befehl lädt das erste Image („Index:1“) aus der WIM-Datei (unter D:\Sources) in das Verzeichnis C:\Win8. Der Vorgang kann je nach Quell-Laufwerk einige Zeit dauern, danach steht der Inhalt des Images im Verzeichnis C:\Win8 zur Bearbeitung bereit. Nach den gewünschten Änderungen schreibt der zweite Befehl das komplette geänderte Image auf die Quelle zurück.

Auch normale Windows-Benutzer können Dism höchst sinnvoll einsetzen, nämlich um ein angepasstes Windows-Notfallsystem auf USB zu erstellen. Unter „Systemsteuerung, Wiederherstellung“ (Windows 7: „Systemsteuerung, Sichern und Wiederherstellen“) lässt sich – ratzfatz – ein externer Systemreparaturdatenträger mit dem Notfallsystem WinRE einrichten. Ähnlich dem oben beschriebenen Dism-Befehl mounten Sie dann zunächst die Datei \Sources\Boot.wim von dem externen Datenträger in ein leeres Verzeichnis auf den Festplatte:

Dism hat die Boot.wim des Reparaturdatenträgers geladen…

Beim „Systemreparaturdatenträger“ (hier I:) muss es sich um einen USB-Stick handeln, da optische Medien (CD, DVD) nicht beschreibbar sind. In das Mount-Verzeichnis (hier: C:\WinRE) kopieren Sie dann die Tools, die Sie auf einem Reparaturdatenträger erwarten, etwa den Total Commander, einen Hex-Editor, einen Bildviewer, ein Undelete-Werkzeug wie Recuva und so fort. Typischer Platz dafür wäre etwa der Unterordner \Programme. Wenn alle Tools untergebracht sind, entladen Sie das Windows-Image mit dem Commit-Schalter und schreiben damit alle Änderungen in das WIM-File auf den Datenträger.

Ein Tipp: Natürlich lässt sich mit DISM auch das auf Festplatte vorinstallierte WinRE erweitern. Die hier einschlägige Image Winre.wim befindet sich im Ordner \Recovery der Systempartition. Beachten Sie hier, dass das 64-Bit-WinRE kein Subsystem für 32-Bit-Software mitbringt. Das heißt, dass Sie hier ausschließlich 64-Bit-Software erfolgreich integrieren können. Ob Sie ein 32- oder 64-Bit-Notfallsystem auf der Festplatte haben, ist einfach zu bestimmen: Das Notfallsystem hat dieselbe Architektur wie das Hauptsystem.
_________________________________________

Diskpart.exe (Laufwerk-/Festplatten-Management, Partitionierung)

Diskpart ist nur wirklich erfahrenen Usern zu empfehlen. Ein „select disk …“ oder „select partition …“ mit der falschen Kennziffer kann je nach Folgebefehl irreparable Schäden anrichten.
Diskpart leistet auf der Kommandozeile (mit Administrator-Rechten) etwa das, was auch die bequemere Diskmgmt.msc im Repertoir hat, etwa das Laden einer virtuellen Harddisk (VHD):

diskpart
select vdisk file=D:\Win7.vhd
attach vdisk
exit

Diskpart kann aber mehr und ist etwa unentbehrlich beim Einrichten boot-fähiger USB-Sticks.

Um einen Datenträger komplett zu säubern, hilft folgende Befehlsfolge:

diskpart
list disk
select disk [n]
clean all
exit

Ein weiterer Vorteil des Kommandozeilen-Tools ist seine Script-Fähigkeit. Mit

diskpart /s datei.txt

kann eine komplette Befehlsfolge in der „Datei.txt“ an das Programm übergeben werden, das dann alle enthaltenen Kommandos Zeile für Zeile abarbeitet.

Diskpart ist auch in der Lage, versteckte OEM-Wiederherstellungspartitionen anzulegen oder zu einer normalen Partition umzuwandeln. Dazu ist es notwendig, das Volume mit „select partition [n]“ mit der richtigen Kennziffer auszuwählen. Danach macht der Befehl
set id=12
die Partition zu einer versteckten OEM-Partition, während
set id=1
die Partition wieder sichtbar macht.
_________________________________________

FC: Exakter Dateivergleich

FC mit dem (Binary-) Schalter /b ist das einzige Windows-Bordmittel, mit dem Sie zwei Dateien exakt vergleichen können. Bei Binär-Dateien oder ISO-Images reicht ein Größenvergleich nicht aus, um die Identität sicherzustellen. Nach

fc /b Ordner\Datei1 Ordner\Datei2

sollte das Hilfsprogramm „Keine Unterschiede gefunden“ melden. Nur dann sind die Dateien identisch.

_________________________________________

Forfiles.exe (Datei-Jongleur und Datumsreporter)

Das hübsch komplizierte Forfiles erlaubt mit knappen einzeiligen Kommandos umfangreiche Datei-Aktionen. Typischerweise sammelt Forfiles Dateien ein und übergibt diese an die CMD.exe oder ein anderes Kommandozeilenprogramm, wobei es diverse Variablen weitergibt.
Das nachfolgende Beispiel nutzt Schalter /s für rekursive Suche, Schalter /m für die Dateimaske, Schalter /c für den Programmaufruf – hier die Cmd. Außerdem werden drei Variablen eingesetzt (Erklärung weiter unten):

forfiles /s /m *.* /c "cmd.exe /c if @isdir==FALSE if @fsize==0 del @path"

Das löscht (del) alle Dateien (/m *.*) in sämtlichen Unterordnern (/s) löschen, deren Dateigröße 0 Byte hat. Zum Testen wird man Forfiles immer erst zur harmlosen ECHO-Ausgabe veranlassen, um die Auswirkung zu kontrollieren:

forfiles /s /m *.* /c "cmd.exe /c if @isdir==FALSE if @fsize==0 echo @path"

Die Variablen mit „@“ sind drei Exemplare von insgesamt neun speziellen Variablen, die Forfiles übergeben kann:
@fname Dateiname, @fsize Dateigröße, @fdate Dateiänderungsdatum
@ftime Dateiänderungszeit, @ext Dateierweiterung, @path Dateipfad
@relpath relativer Pfad, beginnend vom Startverzeichnis des Forfiles-Aufrufs
@isdir für Ordner TRUE, bei Dateien FALSE

Das Kommandozeilentool Forfiles macht die CMD.exe deutlich klüger. Das abgebildete 4NT hätte den Forfiles-Service allerdings nicht nötig.

Noch ein nettes Beispiel:
forfiles /s /d -01.01.2005 /c "cmd /c echo @fdate -- @path"
Hier liefert Forfiles alle Dateien, die vor 2005 entstanden sind oder damals zuletzt geändert wurden. Eine interessante Alternative zur Angabe eines festen Datums nach dem Schalter /d ist die Angabe einer Anzahl von Tagen – etwa „/d -365“. Dann zeigt oder bearbeitet Forfiles – bezogen auf das aktuelle Datum – alle Dateien, die vor einem Jahr erstellt wurden.
_________________________________________

Fsutil.exe (Zugriff auf NTFS-Interna)

Das Tool beherrscht eine Reihe von NTFS-Festplatten-Manipulationen, die bislang an der grafischen Oberfläche nicht zugänglich sind. Ein Beispiel ist das Einrichten von Hardlinks:

cd %appdata%\Microsoft\Vorlagen
fsutil hardlink create normal.dotm \Tools\normal.dotm

Das erstellt eine Datei, die lediglich auf eine andere verweist, ähnlich wie eine Verknüpfung auf dem Desktop. Das ist praktisch, wenn eine Datei aus logischen Gründen in mehreren Ordnern vertreten sein, aber nicht mehrfach Platz beanspruchen soll.

fsutil fsinfo ntfsinfo c:

liefert unter anderem die Clustergröße einer Partition.
Der nächsten Beispielbefehl schaltet die DOS-konforme 8+3-Notierung im Master File Table ab (die wird als doppelte Buchführung zum Zwecke der Abwärtskompatibilität immer noch standardmäßig mitgeschleppt). Der Eingriff sollte gleich nach der Windows-Installation geschehen.

fsutil behavior set disable8dot3 1

Das nächste Beispiel setzt EFS (Encrypted File System – die NTFS-eigene Verschlüsselung) außer Gefecht:

fsutil behavior set DisableEncryption 1

Interessant in manchen Szenarien ist auch:

fsutil file createnew F:\Fillup.txt 15800860672

Wenn ein Datenträger komplett gesäubert werden soll, hilft Formatieren mit exFAT, Füllen der kompletten Kapazität mit dem obigen Befehl, schließlich neuerliches Formatieren.

Exakte Zugriffsstatistiken auf NTFS-Partitionen: Fsutil dient primär zur Analyse, kann aber auch einige NTFS-Interna aktiv umstellen.

_________________________________________

Powercfg.exe (Energieoptionen):

Das Kommandozeilenprogramm kann alles, was die Systemsteuerung unter den „Energieoptionen“ anbietet und darüber hinaus noch deutlich mehr, insbesondere seit Windows Vista und Windows 7. Powercfg muss in einer Cmd.exe ausgeführt werden, für Änderungen an den Energiesparplänen sind dabei Administratorrechte erforderlich.

Ein alter Tipp, der bereits seit XP funktioniert, ist der Befehl:

powercfg -hibernate on | off

Er aktiviert oder deaktiviert den Ruhezustand und die Hiberfil.sys (Ruhezustandsdatei im Rootverzeichnis der Windows-Partition).

powercfg /a

zeigt die aktuell unterstützten ACPI-Zustände an (Advanced Configuration and Power Interface).
Eine opulente Geräteliste produziert Powercfg, wenn Sie sich alle Komponenten inklusive ihrer ACPI-Fähigkeiten auflisten lassen:

powercfg -devicequery all_devices_verbose

Eine Batchdatei mit einigen Powercfg-Zeilen kann im Handumdrehen  die gewünschten Standardeinstellungen auf mehreren PCs einrichten – etwa:

powercfg -change -disk-timeout-ac 10
powercfg -change -disk-timeout-dc 5
powercfg -change -monitor-timeout-ac 8
powercfg -change -monitor-timeout-dc 3

AC steht jeweils für Netzbetrieb, DC für Akkubetrieb; danach folgt die Minutendauer, wann das Gerät bei Nichtbenutzung abgeschaltet werden soll.

Mit Powercfg,exe lassen sich auch die Energieschemata anzeigen und reduzieren:

powercfg -list

Diesem Kommando gibt die Kennziffern und die Bschreibung der Energiesparpläne aus. Danach löschen Sie mit

powercfg -delete [Hex-Kennziffer]

ein nicht mehr benötigtse Schema. Das taucht dann in der Systemsteuerung nicht mehr auf.

_________________________________________

Robocopy.exe (Robust File Copy):

Robocopy gehört seit Vista zum installierten Windows-Standardumfang. Das Tool ist schneller, umfangreicher und fehlertoleranter als sein Vorgänger Xcopy und viele vergleichbare Kopierprogramme. Zahlreiche Options-Parameter sorgen für Lösungsmöglichkeiten in allen Lebenslagen – so etwa die vielen Exclude-Optionen wie:

  • /XD Video* Log*genannte[n] Ordner ausschließen
  • /XF Albumart*.jpg *.ininachfolgend angegebene Dateien/Dateimasken ausschließen
  • /XJDDirectory- (Ordner-) Junctions generell ausschließen

Die Ziffer nach dem Wiederholungsschalter (Retry) /R:3 legt fest, wie oft Robocopy bei Fehlern versucht, die Datei erneut zu kopieren.

Die Ziffer nach dem Warteschalter (Wait) /W:5 definiert die Wartezeit in Sekunden, bis Robocopy im Fehlerfall den nächsten Versuch unternimmt.

Ein typischer Auftrag für Robocopy sieht dann etwa so aus:

robocopy e:\Archiv \\nas\Volume_1\Archiv /MIR /XD Temp* /XJD /DST /W:5 /R:1

Heißt ungefähr: Kopiere alles von E:\Archiv auf den Netzwerkpfad \\nas\…, was dort bislang fehlt, lösche dort alles Überzählige (/Mir), schließe Ordnernamen mit „Temp“ ebenso aus wie eventuelle Ordner-Junctions, ignoriere eventuell differierende Timestamps (Sommerzeit/Winterzeit) und – mach‘ bei Fehlern nicht lang rum.

Achtung bei den Parametern /mir und /purge: Diese Befehle löschen Überzähliges im Zielordner. Als Kontrolle empfiehlt sich hier immer erst der Zusatzschalter /L (List), der die Aktionen nur anzeigt, aber noch nicht ausführt:

robocopy e:\Archiv \\nas\Volume_1\Archiv /MIR /XD Temp* /XJD /DST /W:5 /R:1 /L

Für einen einmal bewährten Robocopy-Job lohnt sich in jedem Fall eine kleine Batchdatei (mit der Erweiterung .BAT oder .CMD), um die komplexen Zeilen nicht manuell eingeben zu müssen. Wer sich mit den Kommandoparametern (siehe „robocopy /?“) gar nicht anfreunden kann, mag alternativ Microsofts Robocopy-GUI verwenden. Hier gibt’s für alle Optionen Kästchen zum Anklicken – mausfreundlich, aber meines Erachtens eher komplizierter, wie folgender Screenshot andeuten mag…

_________________________________________

RunDLL32.exe (Zugriff auf Windows-DLL-Funktionen)
Eine Reihe interessanter Windows-Funktionen, die über dieses Hilfsprogramm erreichbar sind, finden Sie auf dieser Seite.
_________________________________________

Schtasks.exe (Aufgabenplanung am Prompt)
Das Tool ist das Kommandozeilen-Pendant zur „Aufgabenplanung“ (Taskschd.msc), früher „Geplante Tasks“ (XP). Schtasks erlaubt das Auflisten, Erstellen, löschen und Ändern aller Tasks der Aufgabenplanung:

schtasks

Das genügt für eine Kurzzusammenfassung, ganz ausführlich ist das Ergebnis nach:

schtasks /query /v /fo list

Mit

schtasks /delete /tn \Microsoft\Windows\Chkdsk\ProactiveScan

löschen Sie einen geplanten Task. Das Beispiel zeigt, dass der komplette Pfadname angegeben werden muss. Der Pfad kann sowohl in der grafischen Konsole wie mit Schtasks leicht ermittelt werden. Alle Löschungen, Neueinträge und Änderungen erfordern Adminrechte auf der Kommandozeile.

Ein beliebter Trick, bestimmte Programme wie Regedit.exe ohne die Rückfrage der UAC (Benutzerkontensteuerung) zu starten, besteht darin, eine Pseudo-Aufgabe „Regedit“ in der Aufgabenplanung anzulegen und diese dann mit einem Link direkt zu starten. Der Link hat dann das Ziel:

schtasks.exe /run /tn "Regedit"

Beachten Sie, dass der Name nach /tn (Taskname) exakt mit dem erstellten Aufgabennamen in der Aufgabelnplanung übereinstimmen muss. Der Trick funktioniert deshalb, weil die Task der Aufgabenplanung a priori Administratorrechte beanspruchen und daher keine UAC anschlägt.

_________________________________________

Taskkill: Prozesse gezielt beenden

Taskkill ist nützlich, um ein bestimmtes Programm gewaltsam zu beenden. Ein typischer Kandidat ist der Windows-Explorer, der sich nicht auf normalem Weg schließen lässt. Wenn Sie mit „taskkill /im explorer.exe“ den Windows-Explorer beenden wollen, erscheint stattdessen ein Dialog „Windows herunterfahren“ mit den verschiedenen Shutdown-Varianten. Zum Schließen des Explorers brauchen Sie den zusätzlichen Schalter /f (für „Force“)

taskkill /f /im explorer.exe

in dieser Schalterabfolge.

_________________________________________

Waitfor: Signale aus dem Netz

Mit dem kleinen Tool Waitfor schicken Sie Signalwörter an einen Rechner im Netz oder warten auf ein solches Signal. Der Sendevorgang sieht wie folgt aus:

waitfor /s rechnername /si StartGame

Der Empfänger-PC wartet dann mit „waitfor StartGame“ auf das vereinbarte Signal. Das Tool kann für einfache Fernsteuerungszwecke oder als Signalgeber für LAN-Parties dienen. Da es auf der Cmd-Kommandozeile keinen brauchbaren Sleep-Befehl zum Warten gibt, kann es in Batchdateien auch lokal als simple Sleep-Anweisung verwendet werden:

waitfor dummy /t 15

Der Befehl lässt die Batchdatei einfach 15 Sekunden pausieren.

_________________________________________

Windows-Powershell (Objektorientierter Kommanointerpreter)

Eine kleine Einführung in die Powershell finden Sie hier…

_________________________________________

Winsat.exe (Systembewertungstool)

Das Winsat-Systembewertungstool ist Basis für den Windows-Leistungsindex – die Benotung, die Sie nach [Win Pause] angezeigt bekommen. Das Kommandozeilentool zeigt nach „winsat -?“, welche Hardwarekomponenten es analysieren kann (cpu, d3d, disk, media, mem). Ein praktischer Einsatzzweck sind Schreib- und Lesebenchmarks für USB-Sticks und Festplatten:

winsat disk -write -ran -ransize 524288 -drive F
winsat disk -read -ran -ransize 524288 -drive F

Damit erhalten Sie eine objektive Bewertung etwa darüber, welcher der verfügbaren USB-Sticks sich am besten für ein bootfähiges System eignet.
_________________________________________

Wmic.exe (WMI-Console)

Die WMI-Console bietet Zugriff auf alle Klassen der Windows Management Instrumentation (WMI) und ist eine einfache Alternative zu Scriptmethoden oder zu den Powershell-Cmdlets „Get-WmiObject“ und „Get-CimInstance“.
Eine kleine Einführung zur WMIC mit zahlreichen Beispiel-Kommandos finden Sie hier.

_________________________________________

Xcopy.exe (Kopiertool)

Xcopy hat seit der Einführung von Robocopy technisch eigentlich ausgedient. Microsoft liefert es in Windows 7 und 8 weiter mit, weil es in Millionen alter Batchdateien Einsatz findet und außerdem vielen Windows-Nutzern vertraut ist. Für die meisten Sicherungsaktionen hat sich die einprägsame Schalterkombination „/kreisch“ bewährt (die war mir irgendwann 1995 eingefallen), für das Aktualisieren einer bereits bestehenden Sicherung kommt der Datumsschalter „/d“ dazu:
xcopy c:\tools \\server\volume_1\Tools /dkreisch
Diese Kopieaktion würde den Bestand auf dem Server um die neueren und die aktualisierten Daten erweitern.
Wer die Sicherheitsinformationen der Dateien mitkopieren will, kann das memorable Schaltermonster „kreischoxyd“ verwenden.