Alle Windows-Kommandos

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

Liste der Windows-eigenen Kommandos

echo

Übersicht

Befehl
Kurzbeschreibung
Syntax
Beispiele
     net send: an mehrere Benutzer dieselbe Nachricht senden
     Ausgabe eines Befehls in eine Variable holen
     HTML-Ausgabe
     eine Textdatei parsen
     eigener Pause-Text


Befehlecho
KurzbeschreibungZeigt Meldungen an oder schaltet die Befehlsanzeige ein (ON) oder aus (OFF).
Syntax
 
Kommando zum Anzeigen der Hilfe: echo /? 

Zeigt Meldungen an oder schaltet die Befehlsanzeige ein (ON) oder aus (OFF).

  ECHO [ON | OFF]
  ECHO [Meldung]

ECHO ohne Parameter zeigt die aktuelle Einstellung der Befehlsanzeige an.
Beispiele

net send: an mehrere Benutzer dieselbe Nachricht senden

Mit dem Kommando net send kann man an einen Benutzer (bzw. Rechnernamen) eine Nachricht senden. Auch eine bestimmte Nachricht an die ganze Domain abzsetzen, ist mit einem einzelnen Aufruf möglich. Möchte man an ausgewählte Benutzer/ Rechner eine Botschaft senden, sind mehrere Aufrufe von net send erforderlich.
@echo off
 
:: Liste der Empfaenger:
set userlist=jana susi mary anna
 
:: Hier die Nachricht eintragen:
set sMsgText=Es gibt nun Kaffee und Kuchen fuer alle ... Euer Axel
 
echo on
for %%a in (%userlist%) do net send %%a %sMsgText%
@echo off
 
echo %0 beendet.
pause

s.a. » for » net send » pause » set

Ausgabe eines Befehls in eine Variable holen

Zunächst muss man wissen, in welchem Format die Ausgabe eines Kommandos daherkommt und wie man die gesamte Ausgabe nach der gewünschten Zeile filtern kann.

Oft steht die gewünschte Information dann auch nicht allein in der Zeile - dann muss man noch die anderen Informationen ausblenden. Am einfachsten ist dies mit der FOR-Schleife zu bewerkstelligen. Mit den Parametern TOKENS und DELIMS lässt sich die Ausgabe effektiv beschneiden. Das Setzen der Variable erfolgt mit dem normalen SET Befehl.

rem -- Beispiel 1 --
For /F "tokens=2 Delims=:" %%i in ('ipconfig /all^|Find /i "DNS"') Do [BR]
  @Set DNSSERVER=%%i
echo DNSSERVER=%DNSSERVER%
 
rem -- Beispiel 2 --
For /F "tokens=3" %%i in ('Net Config Workstation^|Find /i "Arbeitsstationsdom„ne"') Do [BR]
  @Set WORKGROUP=%%i
echo WORKGROUP=%WORKGROUP%
 
rem -- Beispiel 3 --
set sTMPFILE=%temp%\~test.tmp
regedit /e %sTMPFILE% "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion"
For /F "tokens=2 Delims==" %%a in ('type %sTMPFILE%^| find "ProductId"') do [BR]
  @set winSerial=%%a 2>nul
del %sTMPFILE%
echo Windows-Serial Number=%winSerial%

so holt man den Wert aus der Registry in eine Variable - das funktioniert mit Hilfe der reg.exe, die XP beiliegt:
Hinweise:
  • Der erste Befehl könnte mehrere DNS-Server zurückgeben (wg. alternativen DNS-Servern als auch bei mehreren Netzwerkkarten) - beachte, dass per Default in der For-Schleife nur der letzte Wert zurückgeliefert wird. Mehr zu dieser Eigenheit erfährst du nach Eingabe "for /?" in der Kommandozeile.
  • Das Auffinden der Workgroup oder Domäne sucht nach einem deutschen String. Bei einem anderssprachigen Betriebssystem funktioniert dieser Aufruf schon nicht mehr.
  • regedit exportiert immer alle untergeordneten Schlüssel. Unter XP sollte man reg einsetzen:
    reg QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion /v ProductId

    Dies ist wesentlich schneller und einfacher zuschreiben (aber eben nicht kompatibel zu älteren Win-Versionen). Dieser Aufruf ermittelt den Ordner der History des IE (alles ist in eine Zeile zu schreiben):
    set regfolder="HKEY_CURRENT_USER&Software\Microsoft\Windows\CurrentVersion [BR]
      \Explorer\Shell Folders"
    For /F "tokens=3* delims=[tab_druecken]" %%i in [BR]
      ('reg QUERY %regfolder% /v "History" ^| findstr /i "History"')
    Do set HistoryDir=%%i

s.a. » find » findstr » for » ipconfig » net config » reg » regedit » set » type

HTML-Ausgabe

Die Zeichen < und > haben in einer Batchdatei Ein- und Ausgabefunktionen. Der ganze "Trick" für eine HTML-Ausgabe besteht darin, diese Zeichen zu maskieren, damit man sie in die Ausgabe schreiben kann:

rem -- Ausgabedatei
set htmlout=%temp%\logfile.html

rem -- HTML generieren
echo ^<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"^> >%htmlout%
echo ^<HTML^>^<HEAD^>						>>%htmlout%
echo ^<TITLE^>HTML-Ausgabe-Test^</TITLE^>			>>%htmlout%
echo ^</HEAD^>^<BODY^>						>>%htmlout%
echo ^<H1^>HTML-Test^</H1^>					>>%htmlout%
date /t								>>%htmlout%
time /t								>>%htmlout%
echo ^<HR /^>							>>%htmlout%
echo Hello world.^<HR /^> 					>>%htmlout%
echo ^</BODY^>^</HTML^> 					>>%htmlout%

rem -- Browser starten
start %htmlout%

s.a. » set » start

eine Textdatei parsen

Oft ist es gut, wenn man Informationen aus einer Textdatei liest, statt in einer Batchdatei diese als Variablen abzulegen oder zigfach dieselbe Kommandofolge zu wiederholen. Anpassungen erfolgen dann in einer Konfigurationsdatei und derjenige, der die Anpassung macht, braucht nicht im Skript herumfuhrwerken.

Um eine Textdatei zu parsen, brauchen wir eine Textdatei, aus der wir die Informationen auslesen wollen. Neben den auslesbaren Nutzdaten sollte man Kommentare verwenden können.
Zu Demo verwende ich einmal die folgenden Konventionen:
  • Kommentare sind Zeilen, die mit # beginnen
  • Trennzeichen in meiner Konfiguration ist das Pipe-Symbol: |

... und so kann es aussehen:

# ==================================================
# DEMO-Konfiguration
# Syntax:
# Kuerzel | Anzeigename | zu startendes Programm
# ==================================================

E|Explorer|explorer.exe

W|MS Write|write.exe
P|MS Paint|paint.exe

# -- ENDE

Wenn man ein Menü darsellen möchte, braucht man jeweils das erste und zweite Feld aus fer Konfigurationsdatei. Das Parsen erfolgt mit Hilfe des findstr-Befehls. Die Kommentare kann man mit dem Parameter /v rauswerfen. Dies zeigt alle Zeilen exklusive die mit # am Zeilenanfang:

type menu.txt | findstr /v "^#"

Desweiteren müssen wir wissen, wie wir die überbleibenden Informationen anhand unseres Trenner-Symbols auseinandernehmen können. Dies geht mit Hilfe des For-Kommandos.
Mit dem Parameter /F geben wir an, dass eine Kommandoausgabe geparst werden soll. Mit der Angabe delim wird das Trennzeichen angegeben. Innerhalb der Schleife kann man mit der angegebenen Variable auf den ersten Wert zugreifen; mit dem nächstfolgenden Buchstaben auf den zweiten Wert usw.:

echo Programmauswahl:
for /F "tokens=1,2 delims=|" %%a in ('type menu.txt ^| findstr /v "^#"') do (
	echo Taste %%a ... %%b
)

s.a. » findstr » for

eigener Pause-Text

Das Kommando "pause" zeigt (in der deutschen Windows-Version) immer die Ausgabe

Drücken Sie eine beliebige Taste . . .

Um einen eigenen Text anzuzeigen, verwende ein echo-Kommando; gefolgt vom pause-Kommando, dessen Ausgabe in das NUL-Device umgeleitet wird:

echo beliebige Taste zum Beginnen ... [Strg]+[C] zum Abbrechen
pause >nul

rem ... hier irgendwas machen ...

echo Fertig. Taste zum Beenden.
pause >nul

s.a. » pause


Übersicht