Skriptdepot: Windows Batch

Befehlszeilenreferenz:
Windows 2003 DE
Windows 2008 DE
Windows 2012 EN


Eingabe mit set

@echo off 
set /p Leser="Deine Kenntnisse an Batch-Know-How? K=Klein, M= Mittel G=Gross? "
echo Deine Eingabe: %Leser% && echo. && echo.

rem: Beispiel für Eingabe in einer neuer Zeile:
echo Deine Kenntnisse an Batch-Know-How? K=Klein, M= Mittel G=Gross?
set /p Leser2=
echo Deine Eingabe: %Leser2% && echo. && echo.

rem: Pause ohne die Ausgabe "Drücken Sie eine beliebige Taste . . .":
pause > nul

Die Farben eines bestehenden Fensters umstellen:

color [VH]     (Syntax)
color C0       (Beispiel stellt die Vorder- und Hintergrundfarbe um)
color C        (Beispiel stellt nur die Vordergrundfarbe um)

Ein neues Fenster in speziellen Farben starten:

cmd /t:VH     (Syntax)
cmd /t:C0     (Beispiel)

Farbcodes:

0 = Schwarz        4 = Dunkelrot     8 = Dunkelgrau     C = Rot
1 = Dunkelblau     5 = Lila          9 = Blau           D = Magenta
2 = Dunkelgrün     6 = Ocker         A = Grün           E = Gelb
3 = Blaugrün       7 = Hellgrau      B = Zyan           F = Weiß

Die Größe der Eingabeaufforderung in der Laufzeit ändern

mode con[:] [cols=c] [lines=n]
mode con: cols=80 lines=25

Zäherschleife mit Wertebereich:

for /L {%% | %}Variable in (Anfang#,Schritt#,Ende#) do Befehl [Befehlszeilenoptionen]
FOR /L %%i IN (1;1;9) DO ...        (Mit %%i in einer Batchdatei)
FOR /L %i IN (1;1;9) DO ...         (Mit %i auf der Kommandozeile)

Dienste steuern mit sc:

sc config lanmanserver start= auto
sc stop lanmanserver
sc start lanmanserver

Dienste remote steuern mit sc:

sc \\<server> stop "<Dienst>" 
sc \\<server> start "<Dienst>"

siehe auch: MS Technet


Fenterrahmen für 80 Zeichen breit:

echo ###############################################################################
echo # #
echo # Fenterrahmen für 80 Zeichen breit #
echo # #
echo ###############################################################################


Kommandozeilenargumente prüfen:
Dieses Beispiel prüft ob die ersten beiden Argumente (nicht - weil NEQ) übergeben wurden. Wenn nicht werden Standardwerte gesetzt. Das Ergebnis wird anschließend ausgegeben.

if "%1" NEQ "" (set A=%1) ELSE (set A=80)
if "%2" NEQ "" (set B=%2) ELSE (set B=25)
echo %A%
echo %B%

SLEEP oder WAIT:
Derartige Befehle gibt es unter BATCH nicht, das Problem kann aber mit PING gelöst werden. Die Ausgabe wird auf NUL umgeleitet. Im Beispiel wird die Verarbeitung um 5 Sekunden (Sekunden+1) unterbrochen.

@ping localhost -n 6 >NUL

Aktuelles Verzeichnis merken:

set WorkingDir=%CD%
set ScriptDir=%~dp0

ISO8601-String:

REM This example works only as contant of a CMD or BAT file!

echo off
for /f %%a in ('WMIC OS GET LocalDateTime ^| FIND "."') do set LocalDateTime=%%a

set ISO8601Long=%LocalDateTime:~0,4%-%LocalDateTime:~4,2%-%LocalDateTime:~6,2%T%LocalDateTime:~8,2%:%LocalDateTime:~10,2%:%LocalDateTime:~12,2%
set ISO8601Short=%LocalDateTime:~0,4%%LocalDateTime:~4,2%%LocalDateTime:~6,2%T%LocalDateTime:~8,2%%LocalDateTime:~10,2%%LocalDateTime:~12,2%

echo ISO8601Long:  %ISO8601Long%
echo ISO8601Short: %ISO8601Short%
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License