Batch-"Programmierung"
(Batchdatei/Stapelverarbeitungsdateien)
Einige der hier
aufgeführten Befehl bzw. Script-Schnipsel sind nur in
der Konsole (CMD ) unter Windows lauffähig und somit in
der Rubrik DOS eigentlich falsch platziert. Jedoch
möchte ich für Diese keine eigene Rubrik eröffnen und
habe sie stattdessen mit einem Windows Logo
versehen.
Diese Seite
beinhaltet:

Anwendung
starten ohne zu Warten
Möchte man zwei
Anwendungen "gleichzeitig" über eine Batchdatei starten so muss
man die Anwendungen mit dem Befehl Start ausführen. Ansonsten
startet die Batchdatei zunächst nur die eine Anwendung und
wartet bis diese beendet ist bevor die nächste gestartet wird.
|
Start
"C:\Windows\notepad.exe"
Start "C:\Windows\regedit.exe" |

Ausgabe / Textausgabe
Ausgabe der Befehlsanweisung
unterdrücken
|
@dir
REM das vorangestellte @ unterdrückt
die Ausgabe der Befehlsanweisung für diesen Befehl
@echo off REM alle
Ausgabe ab jetzt unterdrücken
echo. REM
zeigt eine leere Zeile
@echo on
REM Ausgabe wieder einschalten |
Textausgabe
|
echo Hier schreib ich mal was
hin REM einfache
Textausgabe |
Bildschirm löschen
Schriftfarbe und
Hintergrund ändern
Color [HintergrundSchriftfarbe] -
Es stehen folgende 16 Farben von 1 - F zur Verfügung:
0 |
Schwarz
|
1 |
Dunkelblau |
2 |
Dunkelgrün |
3 |
Blaugrün |
4 |
Dunkelrot |
5 |
Lila |
6 |
Ocker |
7 |
Hellgrau |
8 |
Dunkelgrau |
9 |
Blau |
A |
Grün |
B |
Zyan |
C |
Rot |
D |
Magenta |
E |
Gelb |
F |
Weiß |
|
|
|
|
|
|
|
|
|
color 0A
REM Hintergrund schwarz, Schrift grün |

Countdown Zähler (Sekunden)
Datei/Ordner umbenennen
|
@echo off
cls
for /L
%%A in (30,-1,0) do (
echo Noch %%A
Sekunden bis es weiter geht...
ping
localhost -n 2 >nul
cls
)
|

Datei- und Verzeichnisoperationen
Datei/Ordner umbenennen
|
ren C:\Test.txt C:\Test.txt
REM absolute Pfadangabe
ren Test.txt
Neu.txt REM relative
Pfadangabe |
Aktuelles Verzeichnis
ermitteln
Datei/Ordner umbenennen
|
ren C:\Test.txt C:\Test.txt
REM absolute Pfadangabe
ren Test.txt
Neu.txt REM relative
Pfadangabe |
Datei kopieren (Zielordner
muss vorhanden sein Ordner )
|
copy C:\Test.txt C:\Ordner\Test.txt
REM absolute Pfadangabe
copy Test.txt Ordner\Test.txt
REM relative Pfadangabe
copy C:\Test.txt C:\Ordner\Neu.txt
REM Kopieren mit gleichzeitigem Umbenennen |
Datei verschieben
(Zielordner muss vorhanden sein Ordner )
|
move C:\Test.txt C:\Ordner\Test.txt
move C:\Test.txt C:\Ordner\Neu.txt
REM Kopieren mit gleichzeitigem Umbenennen |
Datei löschen
Ordner erstellen
Ordner löschen (nur bei
leeren Ordner möglich)
löschen von Ordnern inkl. Inhalt
|
deltree C:\Ordner
REM nur unter echtem DOS
rd C:\Ordner /s /q
REM so gehts auch unter
 |
In Ordner navigieren -
relative Pfadangabe
|
REM
rückwärts gerichtet - springe zuerst einen Ordner zurück
type ..\test.txt
REM
oder
REM vorwärts gerichtet
-
springe zuerst in den Ordner
type Ordner\test.txt |
Aktueller Dateipfad
ermitteln

|
@echo off
REM
Variante 1
for /f "tokens=2,*" %%i in ('dir /a:d ') do if
"%%i"=="von" set "Pfad=%%j"
echo %Pfad%
REM
Variante 2
echo %CD%
REM
Variante 3
echo %~dp0% |
Lokaler Ordner als
Laufwerk mappen

|
subst L: "C:\Test"
REM Erstellt ein Laufwerl mit dem Buchstaben L mit dem Inhalt
vom Ordner C:\Test |

Verwenden von Variable
Einer
Variable kann beim Deklarieren über den Befehl "Set"
gleich ein Wert zugewiesen werden.
|
set Vari=Test
type Ordner\%Vari%.txt |

+
Alle Dateien in einem Verzeichnis einzeln zippen mit 7z
Mit dieser
Batchanweisung werden alle Dateien eines Verzeichnises
in separate Zip-Archive gepackt. Dabei wird
vorausgesetzt, dass 7z im
Standard-Installationsverzeichnis installiert wurde,
ansonsten "C:\Programme\7-Zip\7z.exe"
entsprechend bitte anpassen.
|
for
%%X in (*.*) do
"C:\Programme\7-Zip\7z.exe" a -t7z -mx=9 -aoa "%%X.7z"
"%%X" |
Möchte man nur einen bestimmten
Dateityp behandeln, so ersetzt man (*.*) durch
z.B. (*.bmp).
Durch das Ändern in (*) werden statt alle Dateien
alle Ordner einzeln gepackt.
Das Attribut -aoa veranlasst das Überschreiben
eines eventuell vorhandenen Archivs mit gleichem Namen.

String Operationen
Zeichen in Stringvariable
ersetzen
Ersetze "A" durch "B". Das
Ergebnis bzw. die Ausgabe wird "TestB" sein.
|
set Vari=TestA
set Vari=%Vari:A=B%
echo %Vari% |
Einer Stringvariable
Zeichen anhängen
Füge zu "Te" "st"
hinzu. Das
Ergebnis bzw. die Ausgabe wird "Test" sein.
|
set Vari=Te
set Vari=%Vari%st
echo %Vari% |
Stringvariable
beschneiden
Die letzten 3 Zeichen abschneiden
|
set Vari=Test.txt
set Vari=%Vari:~0,-3%
echo %Vari% |
Nach den ersten 4 Zeichen
abschneiden
|
set Vari=Test.txt
set Vari=%Vari:~0,4%
echo %Vari% |
Nach den ersten 2 Zeichen, 4
Zeichen ausschneiden
|
set Vari=Test.txt
set Vari=%Vari:~2,4%
echo %Vari% |

Alle Dateinamen eines Dateityps als String auslesen
Alle Textdatein im aktuellen Verzeichnis auslesen.
|
@Echo Off
for %%p in (*.txt) do
echo %%p |

Auswahlmenü

|
@Echo Off
:MENUE
cls
echo Bitte waehlen:
echo --------------
echo 1: Option 1
echo 2: Option 2
echo 3: Option 3
echo --------------
echo.
set x=
set /p x="Bitte Zahl eingeben: "
if '%x%' == '1' goto
OPT1
if '%x%' == '2' goto
OPT2
if '%x%' == '3' goto
OPT3
echo Bitte eine Zahl von 1-3 waehlen
goto :MENUE
:OPT1
echo Option 1 wurde gewaehlt
goto :ENDE
:OPT2
echo Option 2 wurde gewaehlt
goto :ENDE
:OPT3
echo Option 3 wurde gewaehlt
goto :ENDE
:ENDE
Pause |

Auswahlmenü DOS (läuft nicht unter Windows)
|
@Echo Off
cls
echo Bitte waehlen:
echo --------------
echo 1: Option 1
echo 2: Option 2
echo 3: Option 3
echo --------------
echo.
choice /n /c:123 "Bitte Auswahl eingeben: "
if errorlevel 4 goto ENDE
if errorlevel 3 goto OPT3
if errorlevel 2 goto OPT2
if errorlevel 1 goto OPT1
:OPT1
echo Option 1 wurde gewaehlt
goto :ENDE
:OPT2
echo Option 2 wurde gewaehlt
goto :ENDE
:OPT3
echo Option 3 wurde gewaehlt
goto :ENDE
:ENDE
Pause |
 |