Liste der Windows-eigenen Kommandos
echo
BefehlKurzbeschreibung
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
Befehl | echo |
Kurzbeschreibung | Zeigt 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 sendenMit 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 holenZunä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 "Arbeitsstationsdomne"') 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:
s.a. » find » findstr » for » ipconfig » net config » reg » regedit » set » type HTML-AusgabeDie 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 parsenOft 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:
... 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-TextDas Kommando "pause" zeigt (in der deutschen Windows-Version) immer die AusgabeDrü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 |