Hier werden alle Batchcommands aufgelistet und erklärt.
Vorsicht Leerzeichen!
Fehlplazierte oder fehlende Leerzeichen können bei dem Programmieren einer Batch-Datei zu Fehlern führen. Bei den nachfolgenden Beispielen ist also auf die Setzung von Leerzeichen und auf entsprechende Bemerkungen genau zu achten. Scheinbar grundlose Abbrüche beim Ausführen einer Batch-Datei können ebenfalls fehlplatzierten oder fehlenden Leerzeichen geschuldet sein.
@
Schaltet die Ausgabe der Befehlszeile auf dem Bildschirm nur für den aktuellen Befehl aus und ist selbst kein eigener Befehl.
Syntax
@befehl
Stapelanweisung: Ab MS-DOS bis Windows 7
Beispiel:
Inhalt
Ausgabe
und diese ohne!
In Batch Files verhindert "@echo off" zu Beginn des Skriptes die Ausgabe aller (!) Befehlszeilen auf dem Bildschirm bis die Stapelverarbeitung beendet wird, abbricht oder mittendrin ein "@echo on" Befehl erfolgt, um z. B. Befehlszeilen tatsächlich anzuzeigen und dann auszuführen. Kommentare (mit :: oder REM) werden natürlich auch nicht angezeigt. Ist aber nur ein Nebeneffekt.
Ohne @echo off:
: (Doppelpunkt)
Sprungmarke für ein Unterprogramm bzw. eine Kommentarzeile.
Sprungmarken werden benötigt, wenn mittels der Batchdatei eine Bedingung überprüft und erfüllt bzw nicht erfüllt wird und entsprechend weiter verfahren werden soll.
Mit dem Batchbefehl goto wird die Sprungmarke angesprungen.
Anmerkung:
Der Doppelpunkt hat auch die Funktion der Manipulation von Variablen, wenn er direkt hinter einer Variablen steht. Siehe Kapitel "Variablen" in dieser Publikation.
Syntax
:NAMEDERSPRUNGMARKE
Sprungmarken können eine beliebige Länge haben, unter MS-DOS und älteren Windows-Versionen werden allerdings nur die ersten 8 Zeichen beachtet, der Rest wird ignoriert. Kommen in einer Batch also :Sprungmarke1 und :Sprungmarke2 vor, so wird unter Umständen nur die erste beim Aufruf einer der Beiden gefunden. Also besser :ziel1 oder :1st schreiben. Groß- und Kleinschreibung wird nicht unterschieden.
Beispiel:
Inhalt
Sofern die Datei C:\blabla.txt existiert, wird sie mit edit geöffnet, sonst wird das Unterprogramm übersprungen und die Batchdatei bei der Marke :END fortgesetzt, also beendet.
Seit die Befehlserweiterungen aktiviert sind, steht in Batchdateien die Sprungmarke :EOF zur Verfügung, welche sich unsichtbar am Ende der Batch-Datei befindet.
CALL
Mit call kann man eine andere Batch-Datei aufrufen. Sobald diese beendet wurde, wird die ursprüngliche Batchdatei weiter ausgeführt.
Beispiel:
Die Ausgabe wenn man die Datei Call.cmd startet:
Wenn die Befehlserweiterungen aktiviert sind (Standard ab Windows 2000) kann man auch Sprungmarken aufrufen (und auch Parameter übergeben):
Beispiel:
Die Ausgabe:
Vor dem Sprung
Sprungmarke aufgerufen!
Nach dem Sprung
Beispiel mit Parameter:
Die Ausgabe:
Dieser Befehl springt automatisch zum Ende der Batchdatei (beendet die aktuelle Prozedur)
CLS
Mit cls (clear screen) wird der Bildschirm gelöscht.
Syntax
cls
Interner Befehl: Ab MS-DOS bis Windows 7
Beispiel:
Inhalt
Ausgabe
CMD
Das Programm, das es möglich macht, DOS-Befehle auf einem NT-System zu benutzen. CMD ist die NT-Entsprechung von COMMAND.
Syntax:
cmd /a|/u|/q|/d|/e (ON|OFF)|/f (ON|OFF)|/v (ON|OFF)|/c befehl|/s|/k|/y
Konsole: Ab Windows NT 4.0 bis Windows NT 6.1 (Windows 7)
Beispiel:
Inhalt
Ausgabe (unter XP)
Ausgabe (unter Vista)
Ausgabe (unter Win 7)
Ausgabe (unter Win 8 Beta)
COLOR
Mit dem Befehl COLOR kann man die Vorder- und Hintergrundfarbe verändern. Die COLOR Werte bestehen aus zwei HEX-Werten, wobei der erste HEX-Wert für die Hintergrundfarbe und der zweite HEX-Wert für die Vordergrundfarbe steht.
HEX-Wert Farbe
0 Schwarz
1 Dunkelblau
2 Dunkelgrün
3 Blaugrün
4 Dunkelrot
5 Lila
6 Ocker
7 Hellgrau
HEX-Wert Farbe
8 Dunkelgrau
9 Blau
A Grün
B Zyan
C Rot
D Magenta
E Gelb
F Weiß
Der folgende Befehl ergibt z.B. einen grünen Hintergrund mit weißer Schrift.
COMMAND
Startet einen neuen Kommandointerpreter. Dieser kann mit exit wieder beendet werden.
Syntax:
command Laufwerk:Pfad Gerät /e /l /u /P /MSG /LOW (/Y (/c|/k) Befehl)
Konsole: Ab MS-DOS bis Windows XP
Beispiel:
Inhalt
Ausgabe (unter Windows 95)
ECHO
Gibt einen Text aus oder schaltet die Befehlszeilen an/aus. Wenn ein Text ausgegeben wird, können dort auch Variablen angezeigt werden, wie z. B. die Variable %ver% (in Windows XP %os%).
Syntax:
echo text|ON|OFF oder alternativ echo.[text]
Interner Befehl: Ab MS-DOS bis Windows NT 5.1 (XP)
Beispiel:
Inhalt
Ausgabe
Inhalt
Ausgabe
Benutzereingaben mit ECHO
Mit Hilfe des echo-Befehls können Sie auch in einem Skript Benutzereingaben simulieren, indem Sie den Pipe-Operator | verwenden.
Beispiel: Uhrzeit anzeigen ohne Nachfrage
Das normale Verhalten des time-Befehls ist, die aktuelle Zeit der verwendeten Systemuhr anzuzeigen und in der nächsten Zeile die Eingabe einer neuen Uhrzeit zu erwarten. Drückt man auf Enter, bleibt die Systemzeit unverändert. Will man die Zeit nur anzeigen lassen (z. B. in einer Batchdatei vor und nach einer Befehlsfolge, um zu messen, wie lange der PC dafür braucht), lässt sich die Betätigung der Enter-Taste durch einen entsprechenden echo-Befehl ersetzen.
Über den Pipe-Mechanismus lässt sich darüber hinaus die Zeile „Geben Sie die neue Uhrzeit ein:“ unterdrücken:
echo.|time|find /v "neue"
Dabei ist die Groß-/Kleinschreibung von "neue" zu beachten oder der Schalter /I zu verwenden, denn find ist case-sensitiv! Diese Beispiele dienen allerdings nur zur Demonstration, denn die Zeitausgabe wäre auch ohne Pipes (aber erst ab Windows 2000) möglich mit:
time /t
oder einfach:
echo %time%
Sehr nützlich ist das echo-Piping auch zur Übergabe von Benutzereingaben, welche von einzelnen Befehlen abgefragt werden.
Beispiel: Überprüfung einer Festplatte
chkdsk c: /f /r
kann (da es sich beim Laufwerk C um das Systemlaufwerk handelt) erst nach einem Systemstart ausgeführt werden. Normalerweise müsste der Benutzer deswegen den Systemstart durch Eingabe von "Y" bestätigen. Diese Aktion kann man in einem Batch so abbilden:
echo y | chkdsk c: /f /r
.
FOR
Ermöglicht die Schleifenbearbeitung.
Syntax:
for Variable in Satz do Befehl [Parameter]
Interner Befehl: Ab MS-DOS bis Windows NT 6.1 (Windows 7)
Beispiel:
Zeigt alle Dateien im Verzeichnis %temp% an. Es werden nur Dateien, keine Verzeichnisse angezeigt. Um Verzeichnisse anzuzeigen siehe Liste der FOR-Optionen unten. Der Parameter /R bewirkt, dass alle Unterverzeichnisse mit einbezogen werden (Rekursive Schleife).
ACHTUNG:
Die Variable darf nur aus einem Buchstaben bestehen! "%t" ist erlaubt, "%test" nicht! Bei der Verwendung mehrerer Befehle muss zwischen "DO" und der Klammer "(" ein Leerzeichen sein.
Falsch
for Variable in Satz do(
RICHTIG
for Variable in Satz do (
Befehl1
Befehl2
)
Inhalt
@echo off
for /R %temp% %%f in (*.*) do (
echo %%f
)
REM Den Befehl könnte man auch einzeilig schreiben.
pause
Ausgabe
(Alle Temp-Dateien)
Bitte beliebige Taste drücken...
Zählschleifen
Mit solchen Schleifen kann man Aktionen eine bestimmte Anzahl oft ausführen. Dazu muss man den Parameter /L angeben.
Syntax: for /L {Variable} IN (Startzahl, Schrittweite, Endzahl) DO (Aktion)
REM Schreibe Text 5 Mal
for /L %%N IN (1, 1, 5) DO echo Nummer %%N
Ausgabe:
C:\>for /L %%N IN (1, 1, 5) DO echo Nummer %%N
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>echo Nummer 4
Nummer 4
C:\>echo Nummer 5
Nummer 5
verschachtelte Zählschleife:
for /L %%N IN (1, 1, 5) DO
for /L %%N IN (1, 1, %N)DO echo Nummer %N
Ausgabe:
C:\>for /L %%N IN (1 1 5) DO (for /L %N IN (1 1 %N) DO echo Nummer %N )
C:\>(for /L %%N IN (1 1 1) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>(for /L %%N IN (1 1 2) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>(for /L %%N IN (1 1 3) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>(for /L %%N IN (1 1 4) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>echo Nummer 4
Nummer 4
C:\>(for /L %%N IN (1 1 5) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>echo Nummer 4
Nummer 4
C:\>echo Nummer 5
Nummer 5
Weitere Möglichkeiten der FOR-Schleife:
syntax-FOR-Files
FOR %%parameter IN (set) DO command
syntax-FOR-Files-Rooted at Path
FOR /R [[drive:]path] %%parameter IN (set) DO command
syntax-FOR-Folders
FOR /D %%parameter IN (folder_set) DO command
syntax-FOR-List of numbers
FOR /L %%parameter IN (start,step,end) DO command
syntax-FOR-File contents
FOR /F ["options"] %%parameter IN (filenameset) DO command
FOR /F ["options"] %%parameter IN ("Text string to process") DO command
syntax-FOR-Command Results
FOR /F ["options"] %%parameter IN ('command to process') DO command
Beispiel: Sucht im Ordner C:\Windows\Temp rekursiv nach Dateien mit dem Namen //temp.dat// und gibt die Liste aus. Die Option "token=*" ist notwendig, damit die Ausgabe zeilenweise gelesen wird und auch Pfade mit enthaltenem Leerzeichen ausgegeben werden können.
for /F "tokens=*" %%f in ('dir /S /b C:\Windows\Temp\temp.dat') do (
echo "%%f".
)
Zählvariablen in Zeichenketten einbetten
Um die Zählvariable %%f (%f auf der Kommandozeile) in einer Zeichenfolge zu verwenden, wird einfach die Variable in dem String eingebettet
FOR %%f IN (A B C D E) DO (
echo mitten%%fdrinnen
)
GOTO
Mit dem Batchbefehl goto wird eine Sprungmarke : (s.o.) angesprungen.
Syntax
goto NAMEDERSPRUNGMARKE
Beispiel
Siehe unter : (Doppelpunkt).
IF
Der IF Befehl ermöglicht eine einfache Verzweigung und wird oft zusammen mit dem GOTO Befehl eingesetzt. IF ermöglicht hierbei sowohl die Prüfung auf eine Gleichheit als auch auf das Vorhandensein von Dateien.
Beispiel 1:
@echo off
IF exist c:\temp\my.log echo.>c:\temp\my.log
echo.Log Datei erstellt>>c:\temp\my.log
Beispiel 1 prüft ob eine Logdatei vorhanden ist und erstellt ggf. eine Neue.
Beispiel 2:
@echo off
IF "%COMPUTERNAME%" == "Bastie" GOTO WAHR
REM hier landet man wenn der if-Ausdruck falsch ist
GOTO WEITER
:WAHR
REM hier landet man wenn der if-Ausdruck wahr ist
echo Willkommen Zuhause
REM Jetzt wird der if Zweig verlassen
GOTO WEITER
:WEITER
echo.Have a nice Day!
Beispiel 3:
IF "%COMPUTERNAME%" == "Bastie" (
echo Willkommen zu Hause!
) ELSE (
echo Du bist auf Computer: %COMPUTERNAME%
)
echo. Schönen Tag noch!
Beachten Sie, bei der Prüfung von Umgebungsvariablen niemals
IF %Umgebungsvariable% == Prüfwert ...
zu schreiben, wenn die Umgebungsvariable nicht gesetzt ist; Sie erhalten sonst einen Syntaxfehler. Der Parameter /i unterbindet eine Differenzierung der Groß-/Kleinbuchstaben.
ACHTUNG:
Bei der Verwendung mehrerer Befehle muss zwischen Bedingung und der Klammer "(" ein Leerzeichen sein.
Falsch
IF Bedingung(
Richtig
IF Bedingung (
Befehl1
Befehl2
)
Syntax Vergleiche
IF <NOT> Variable1==Variable2
IF %Variable% EQU %Variable2% (Befehl) An die Stelle von EQU kann jede der Optionen gesetzt werden.
NOT Der Befehl wird nur ausgeführt, wenn die Bedingung NICHT Wahr ist. Optional.
== ist gleich
EQU ist gleich
NEQ nicht gleich
LSS kleiner als
LEQ kleiner als oder gleich
GTR größer als
GEQ größer als oder gleich
Hinweis zu UND bzw. ODER Verknüpfung
Eine UND bzw. ODER Verknüpfung von zwei Bedingungen scheint nicht direkt möglich zu sein. Beim Vergleichen von Strings hilft es aber eventuell wenn man die beiden Strings miteinander verkettet.
Beispiel
set A=true
set B=false
if "%A%;%B%"=="true;true" (
echo A und B sind beide TRUE
) else (
echo entweder A oder B ist nicht = TRUE
)
Als Workaround können mehrere aufeinanderfolgende IFs zu einer UND bzw. ODER Verknüpfungen kombiniert werden. Bei einer ODER Verknüpfung wird der Code ausgeführt, sobald eine der Bedingungen wahr ist. Wenn alle Bedingungen geprüft wurden, und keine erfolgreich war, werden die Befehle im ELSE Zweig ausgeführt.
set A=true
set B=false
if "%A%"=="true" goto :WAHR // Diese Zeile ist doch erfüllt, also sollte der in :WAHR springen
if "%B%"=="true" goto :WAHR
REM keine der Bedingungen ist zu :WAHR gesprungen, wir sind also im ELSE Zweig
REM hier waere :FALSCH
echo Weder A noch B ist TRUE
goto :eof
:WAHR
echo A oder B ist TRUE
Für ein UND wird in den ELSE Zweig gesprungen ( :FALSCH ) sobald eine der Bedingungen nicht zutrifft. Nur wenn alle Bedingunen zutreffen wird der Code ausgeführt.
set A=true
set B=false
if "%A%"NEQ"true" goto :FALSCH
if "%B%"NEQ"true" goto :FALSCH
REM wird sind durch die IFs gekommen, also hat keine der Bedingungen angeschlagen.
REM hier waere die :WAHR Sprungmarke
echo A und B sind beide TRUE
goto :eof
:FALSCH
echo A oder B (oder beide) sind FALSE
Diese beiden Beispiele lassen sich einfach durch Kopieren der "IF..." Zeile um beliebig viele Bedingungen erweitern. Ein mischen von UND und ODER Verknüpfungen ist leider nicht ohne weiteres möglich.
PAUSE
Unterbricht die Abarbeitung der Batchdatei und wartet auf einen Tastendruck.
Syntax
pause
Interner Befehl: Ab MS-DOS bis Windows NT 5.1 (XP)
Beispiel 1:
Inhalt
@echo off
echo Willkommen zur Batchdatei %0 !!!
echo.
echo Die Batchdatei wird auf einer neuen Seite fortgeführt.
pause
cls
echo Hier fängt meine Batchdatei an...
pause
Ausgabe
Willkommen zur Batchdatei beispiel.bat !!!
Die Batchdatei wird auf einer neuen Seite fortgeführt.
Bitte beliebige Taste drücken...
(Neue Seite)
Hier fängt meine Batchdatei an...
Bitte beliebige Taste drücken...
Beispiel 2:
Inhalt
@echo off
echo Diese Zeile wird angezeigt anstelle von "Bitte beliebige Taste drücken..."
pause > NUL
Ausgabe
Diese Zeile wird angezeigt anstelle von "Bitte beliebige Taste drücken..."
Um eine Pause für eine bestimmte Zeitdauer vorzugeben, kann der ping-Befehl „missbraucht“ werden. Das folgende Beispiel erzeugt eine Pause von genau 10 Sekunden durch die Ausgabeumleitung >nul wird jegliche Meldung unterdrückt.
ping 1.2.3.4 -n 1 -w 10000 > nul
PUSHD / POPD
pushd wechselt zum angegebenen Pfad und speichert den aktuellen Pfad bis zum Aufruf von popd.
popd wechselt zum gespeicherten Pfad.
Die Befehle können geschachtelt werden.
Syntax
pushd pfad
popd
Beispiel:
C:\WINDOWS>pushd c:\temp
C:\temp>pushd c:\
C:\>popd
C:\temp>popd
C:\WINDOWS>
REM
REM leitet einen Kommentar ein. Die Zeile wird ignoriert, beachten Sie jedoch, dass REM von einem Leerzeichen / Tabulator gefolgt werden muss. Alternativ dazu werden häufig auch Sprungmarken eingesetzt, da hier nur ein statt vier Zeichen verwendet werden muss. Häufig wird jedoch die Sprungmarke zur besseren Übersicht doppelt hintereinander geschrieben ::
Beispiel:
REM kill iexplore.exe
:kill iexplore.exe
::kill iexplore.exe
START
Startet ein Programm.
Syntax:
START ["Titel"] [/D <Pfad>] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME] [/WAIT] [/B] [Befehl/Programm] [Parameter]
Optionen:
"Titel" Der Titel des neuen Fensters.
/D <Pfad> Startverzeichnis
/I Die neue Umgebung soll die dem CMD.EXE beim Aufruf übergebene sein und nicht die aktuelle Umgebung.
/MIN Startet das Fenster minimiert.
/MAX Startet das Fenster maximiert.
/SEPARATE Startet 16-Bit-Windows-Programm in separatem Speicherbereich.
/SHARED Startet 16-Bit-Windows-Programm in gemeinsamen Speicherbereich.
/LOW Startet Anwendung in IDLE-Prioritätsklasse.
/NORMAL Startet Anwendung in der NORMAL-Prioritätsklasse.
/HIGH Startet Anwendung in der HIGH-Prioritätsklasse.
/REALTIME Startet Anwendung in der REALTIME-Prioritätsklasse.
/WAIT Startet die Anwendung und wartet auf das Ende.
/B Startet die Anwendung ohne ein neues Fenster zu öffnen. Die Anwendung ignoriert STRG+C. Wenn die Anwendung nicht selbständig STRG+C überprüft, ist STRG+UNTBR die einzige Möglichkeit, um die Anwendung abzubrechen.
/? Gibt die Hilfe aus.
Hier eine Liste der nützlichen (System)Programme, die man so ausführen kann:
regedit.exe = neuer Registrierungseditor
(regedt32.exe = älterer Registrierungseditor)
explorer.exe = Windows Ordner Explorer
taskmgr.exe = Windows Taskmanager
taskeng.exe = Aufgabenplanungsmodul
calc.exe = Taschenrechner
mshta.exe = Scripthost für HTA (HTML) Scripting
W/CScript.exe = Beides Bestandteil des Windows Scripthostes für JS und VBS
iexplore.exe = Microsoft Windows Internet Explorer, Standardbrowser für Windows
firefox.exe = Mozilla Firefox, Internetbrowser
dialer.exe = Windows-Hilfeprogramm für DFÜ Einwahlverbindungen
Notepad.exe = Standard-Textbearbeitungsprogramm von Microsoft
cmd.exe = Microsoft Windows Befehlsprozessor für Batch
winword = Microsoft Word
Variablen
Es gibt zweierlei Arten von Variablen: Scriptvariablen und Systemvariablen. Die Scriptvariablen werden innerhalb von Schleifen eingesetzt, beginnen mit % und einem frei wählbaren Zeichen, oder einer Zeichenfolge. Systemvariablen müssen von % begonnen und von % abgeschlossen werden. Sie sind fest definiert. Die Variable %0% hat stets den Namen der aktuellen Datei. Die Variable %ver% hat immer den Namen der aktuellen Betriebssystemversion. Unter Windows XP muss %os% statt %ver% verwendet werden.
Gibt man unter Windows Vista und 7 den Befehl echo %os% ein, so gibt der Computer die Version des Systems aus, auf dem das System basiert. Unter Windows Vista und Windows 7 gibt es einen Befehl namens ver, mit dem man die Version direkt angezeigt bekommt. Es gibt zwar keine direkte Variable bei Vista und Windows 7, die das Betriebssystem definiert, jedoch kann man das mit folgendem Trick umgehen:
@echo off ' Autobefehlsanzeige ausgeschaltet
ver > TMP.dat ' speichert die Ausgabe des Befehls in der Datei TMP.dat
Set /p ver= < TMP.dat ' definiert die Variable des Betriebssystems. (NUR TEMPORÄR !)
echo %ver% ' gibt nun die definierte Variable aus.
pause>nul ' pause
Nützliche Stringoperation für Variablen:
Teilstring
Syntax
var:~n,m
Ergibt den Teilstring von var, beginnend mit dem n-ten Zeichen ( von links) und einer Länge von m Zeichen. Gezählt wird ab 0, d.h. das erste Zeichen hat die Position 0 und nicht 1. Werden negative Werte verwendet, so wird vom Ende des Strings /von rechts nach links) gezählt.
Beispiel:
Inhalt:
set str=myfile.bat
set name=%str:~0,6%
echo %name%
In diesem Beispiel wird der Teilstring von str vom ersten Zeichen an mit einer Länge von 6 Zeichen ausgegeben.
Ausgabe:
myfile
Stringsubstitution
Syntax
var:str1=str2
Mithilfe des Syntax var:str1=str2 kann die Zeichenkette str1 des Inhalts der Variable var durch str2 ersetzt werden.
Beispiel:
Inhalt:
set str="mycommand /p /m file"
echo %str%
set str=%str:/p /m=/t %
echo %str%
In diesem Beispiel werden die Optionen /p /m des Befehls mycommand durch die Option /t ersetzt.
Ausgabe:
"mycommand /p /m file"
"mycommand /t file"
Benutzereingaben in Variablen speichern
Um eine Benutzereingabe in eine Variable speichern zu können wird die Option /p benötigt
Beispiel:
set /p EINGABE=Variable Eingeben:
echo %EINGABE%
Mit Variablen Rechnen
Rechnungen mit Variablen sind erst mit der Option /a möglich
Beispiel:
set WERT1=2
set WERT2=21
set /a WERT1 = %WERT1%*%WERT2%
echo %WERT1%
Vorsicht Leerzeichen!
Fehlplazierte oder fehlende Leerzeichen können bei dem Programmieren einer Batch-Datei zu Fehlern führen. Bei den nachfolgenden Beispielen ist also auf die Setzung von Leerzeichen und auf entsprechende Bemerkungen genau zu achten. Scheinbar grundlose Abbrüche beim Ausführen einer Batch-Datei können ebenfalls fehlplatzierten oder fehlenden Leerzeichen geschuldet sein.
@
Schaltet die Ausgabe der Befehlszeile auf dem Bildschirm nur für den aktuellen Befehl aus und ist selbst kein eigener Befehl.
Syntax
@befehl
Stapelanweisung: Ab MS-DOS bis Windows 7
Beispiel:
Inhalt
Code:
echo Diese Zeile wird mit Befehlszeile ausgefuehrt... @echo und diese ohne!
Code:
C:\>echo Diese Zeile wird mit Befehlszeile ausgefuehrt... Diese Zeile wird mit Befehlszeile ausgefuehrt...
In Batch Files verhindert "@echo off" zu Beginn des Skriptes die Ausgabe aller (!) Befehlszeilen auf dem Bildschirm bis die Stapelverarbeitung beendet wird, abbricht oder mittendrin ein "@echo on" Befehl erfolgt, um z. B. Befehlszeilen tatsächlich anzuzeigen und dann auszuführen. Kommentare (mit :: oder REM) werden natürlich auch nicht angezeigt. Ist aber nur ein Nebeneffekt.
Code:
@echo off REM Verhindert, dass dieser Kommentar angezeigt wird.
Code:
C:\>REM Dieser Kommentar wird so angezeigt
Sprungmarke für ein Unterprogramm bzw. eine Kommentarzeile.
Sprungmarken werden benötigt, wenn mittels der Batchdatei eine Bedingung überprüft und erfüllt bzw nicht erfüllt wird und entsprechend weiter verfahren werden soll.
Mit dem Batchbefehl goto wird die Sprungmarke angesprungen.
Anmerkung:
Der Doppelpunkt hat auch die Funktion der Manipulation von Variablen, wenn er direkt hinter einer Variablen steht. Siehe Kapitel "Variablen" in dieser Publikation.
Syntax
:NAMEDERSPRUNGMARKE
Sprungmarken können eine beliebige Länge haben, unter MS-DOS und älteren Windows-Versionen werden allerdings nur die ersten 8 Zeichen beachtet, der Rest wird ignoriert. Kommen in einer Batch also :Sprungmarke1 und :Sprungmarke2 vor, so wird unter Umständen nur die erste beim Aufruf einer der Beiden gefunden. Also besser :ziel1 oder :1st schreiben. Groß- und Kleinschreibung wird nicht unterschieden.
Beispiel:
Inhalt
Code:
if exist C:\blabla.txt goto EDITBLA goto END :: Kommentarzeile, sofern es erforderlich ist, einen Kommentar zu schreiben :: Zur Unterscheidung von Sprungmarken verwende ich zwei "::" :EDITBLA edit c:\blabla.txt :END
Seit die Befehlserweiterungen aktiviert sind, steht in Batchdateien die Sprungmarke :EOF zur Verfügung, welche sich unsichtbar am Ende der Batch-Datei befindet.
CALL
Mit call kann man eine andere Batch-Datei aufrufen. Sobald diese beendet wurde, wird die ursprüngliche Batchdatei weiter ausgeführt.
Beispiel:
Code:
REM Call.cmd @echo off echo Diese Batchdatei ruft eine andere auf. call anderedatei.bat pause
Code:
REM anderedatei.bat @echo off echo Die andere Datei
Code:
Diese Batchdatei ruft eine andere auf.
Die andere Datei
{Pause}
Beispiel:
Code:
@echo off REM Diese Batchdatei ruft eine eigene Sprungmarke auf echo Vor dem Sprung call :sprungmarke echo Nach dem Sprung pause goto end :sprungmarke echo Sprungmarke aufgerufen! goto :eof :: ":EOF" führt nicht zum unsichtbaren Ende der Batch-Datei, wie oben beschrieben, :: sondern führt die Batch-Datei nach dem Aufruf der Sprungmarke fort :end exit
Vor dem Sprung
Sprungmarke aufgerufen!
Nach dem Sprung
Beispiel mit Parameter:
Code:
@echo off REM Diese Batchdatei ruft eine eigene Sprungmarke auf echo Vor dem Sprung call :sprungmarke meinParameter echo Nach dem Sprung pause goto end :sprungmarke echo Sprungmarke aufgerufen und Parameter %1 uebergeben! goto :eof :end exit
Code:
Vor dem Sprung Sprungmarke aufgerufen und Parameter meinParameter uebergeben! Nach dem Sprung
Code:
goto :eof
CLS
Mit cls (clear screen) wird der Bildschirm gelöscht.
Syntax
cls
Interner Befehl: Ab MS-DOS bis Windows 7
Beispiel:
Inhalt
Code:
@echo off echo Hier schreibe ich jetzt ganz viel Text. echo Hier kann ich z.B. hinschreiben, dass ich jemanden mag. echo. echo Aber den Text sieht man gleich sowieso nicht mehr... Hihi! cls echo War irgendetwas? pause>nul
Ausgabe
Code:
War irgendetwas?
Das Programm, das es möglich macht, DOS-Befehle auf einem NT-System zu benutzen. CMD ist die NT-Entsprechung von COMMAND.
Syntax:
cmd /a|/u|/q|/d|/e (ON|OFF)|/f (ON|OFF)|/v (ON|OFF)|/c befehl|/s|/k|/y
Konsole: Ab Windows NT 4.0 bis Windows NT 6.1 (Windows 7)
Beispiel:
Inhalt
Code:
cmd
Code:
C:\>cmd Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\>
Code:
C:\>cmd Microsoft Windows [Version 6.0.6001] Copyright (c) 2006 Microsoft Corporation. Alle Rechte vorbehalten. C:\>
Code:
C:\>cmd Microsoft Windows [Version 6.1.7600] Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten. C:\>
Code:
C:\>cmd Microsoft Windows [Version 6.2.8250] Copyright (c) 2012 Microsoft Corporation. Alle Rechte vorbehalten. C:\>
Mit dem Befehl COLOR kann man die Vorder- und Hintergrundfarbe verändern. Die COLOR Werte bestehen aus zwei HEX-Werten, wobei der erste HEX-Wert für die Hintergrundfarbe und der zweite HEX-Wert für die Vordergrundfarbe steht.
HEX-Wert Farbe
0 Schwarz
1 Dunkelblau
2 Dunkelgrün
3 Blaugrün
4 Dunkelrot
5 Lila
6 Ocker
7 Hellgrau
HEX-Wert Farbe
8 Dunkelgrau
9 Blau
A Grün
B Zyan
C Rot
D Magenta
E Gelb
F Weiß
Der folgende Befehl ergibt z.B. einen grünen Hintergrund mit weißer Schrift.
Code:
COLOR 2F
Startet einen neuen Kommandointerpreter. Dieser kann mit exit wieder beendet werden.
Syntax:
command Laufwerk:Pfad Gerät /e /l /u /P /MSG /LOW (/Y (/c|/k) Befehl)
Konsole: Ab MS-DOS bis Windows XP
Beispiel:
Inhalt
Code:
command
Code:
C:\WINDOWS>command Microsoft(R) Windows 95 (C)Copyright Microsoft Corp 1981-1996. C:\WINDOWS>
Gibt einen Text aus oder schaltet die Befehlszeilen an/aus. Wenn ein Text ausgegeben wird, können dort auch Variablen angezeigt werden, wie z. B. die Variable %ver% (in Windows XP %os%).
Syntax:
echo text|ON|OFF oder alternativ echo.[text]
Interner Befehl: Ab MS-DOS bis Windows NT 5.1 (XP)
Beispiel:
Inhalt
Code:
@echo off echo Die aktuelle Datei heißt %0. echo Die aktuelle Version Ihrer Befehls-Konsole oder -OS heißt %ver%
Code:
Die aktuelle Datei heißt beispiel.bat. Die aktuelle Version Ihrer Befehls-Konsole oder -OS heißt Windows NT Mit echo. können Sie zudem leere Zeilen ausgeben. Beispiel:
Code:
@echo off echo Jetzt gibt es 3 Leere Zeilen zu sehen! echo. echo. echo. echo So! Da waren sie.
Code:
Jetzt gibt es 3 Leere Zeilen zu sehen! So! Da waren sie.
Mit Hilfe des echo-Befehls können Sie auch in einem Skript Benutzereingaben simulieren, indem Sie den Pipe-Operator | verwenden.
Beispiel: Uhrzeit anzeigen ohne Nachfrage
Das normale Verhalten des time-Befehls ist, die aktuelle Zeit der verwendeten Systemuhr anzuzeigen und in der nächsten Zeile die Eingabe einer neuen Uhrzeit zu erwarten. Drückt man auf Enter, bleibt die Systemzeit unverändert. Will man die Zeit nur anzeigen lassen (z. B. in einer Batchdatei vor und nach einer Befehlsfolge, um zu messen, wie lange der PC dafür braucht), lässt sich die Betätigung der Enter-Taste durch einen entsprechenden echo-Befehl ersetzen.
Code:
echo.|time
echo.|time|find /v "neue"
Dabei ist die Groß-/Kleinschreibung von "neue" zu beachten oder der Schalter /I zu verwenden, denn find ist case-sensitiv! Diese Beispiele dienen allerdings nur zur Demonstration, denn die Zeitausgabe wäre auch ohne Pipes (aber erst ab Windows 2000) möglich mit:
time /t
oder einfach:
echo %time%
Sehr nützlich ist das echo-Piping auch zur Übergabe von Benutzereingaben, welche von einzelnen Befehlen abgefragt werden.
Beispiel: Überprüfung einer Festplatte
chkdsk c: /f /r
kann (da es sich beim Laufwerk C um das Systemlaufwerk handelt) erst nach einem Systemstart ausgeführt werden. Normalerweise müsste der Benutzer deswegen den Systemstart durch Eingabe von "Y" bestätigen. Diese Aktion kann man in einem Batch so abbilden:
echo y | chkdsk c: /f /r
.
FOR
Ermöglicht die Schleifenbearbeitung.
Syntax:
for Variable in Satz do Befehl [Parameter]
Interner Befehl: Ab MS-DOS bis Windows NT 6.1 (Windows 7)
Beispiel:
Zeigt alle Dateien im Verzeichnis %temp% an. Es werden nur Dateien, keine Verzeichnisse angezeigt. Um Verzeichnisse anzuzeigen siehe Liste der FOR-Optionen unten. Der Parameter /R bewirkt, dass alle Unterverzeichnisse mit einbezogen werden (Rekursive Schleife).
ACHTUNG:
Die Variable darf nur aus einem Buchstaben bestehen! "%t" ist erlaubt, "%test" nicht! Bei der Verwendung mehrerer Befehle muss zwischen "DO" und der Klammer "(" ein Leerzeichen sein.
Falsch
for Variable in Satz do(
RICHTIG
for Variable in Satz do (
Befehl1
Befehl2
)
Inhalt
@echo off
for /R %temp% %%f in (*.*) do (
echo %%f
)
REM Den Befehl könnte man auch einzeilig schreiben.
pause
Ausgabe
(Alle Temp-Dateien)
Bitte beliebige Taste drücken...
Zählschleifen
Mit solchen Schleifen kann man Aktionen eine bestimmte Anzahl oft ausführen. Dazu muss man den Parameter /L angeben.
Syntax: for /L {Variable} IN (Startzahl, Schrittweite, Endzahl) DO (Aktion)
REM Schreibe Text 5 Mal
for /L %%N IN (1, 1, 5) DO echo Nummer %%N
Ausgabe:
C:\>for /L %%N IN (1, 1, 5) DO echo Nummer %%N
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>echo Nummer 4
Nummer 4
C:\>echo Nummer 5
Nummer 5
verschachtelte Zählschleife:
for /L %%N IN (1, 1, 5) DO
for /L %%N IN (1, 1, %N)DO echo Nummer %N
Ausgabe:
C:\>for /L %%N IN (1 1 5) DO (for /L %N IN (1 1 %N) DO echo Nummer %N )
C:\>(for /L %%N IN (1 1 1) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>(for /L %%N IN (1 1 2) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>(for /L %%N IN (1 1 3) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>(for /L %%N IN (1 1 4) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>echo Nummer 4
Nummer 4
C:\>(for /L %%N IN (1 1 5) DO echo Nummer %N )
C:\>echo Nummer 1
Nummer 1
C:\>echo Nummer 2
Nummer 2
C:\>echo Nummer 3
Nummer 3
C:\>echo Nummer 4
Nummer 4
C:\>echo Nummer 5
Nummer 5
Weitere Möglichkeiten der FOR-Schleife:
syntax-FOR-Files
FOR %%parameter IN (set) DO command
syntax-FOR-Files-Rooted at Path
FOR /R [[drive:]path] %%parameter IN (set) DO command
syntax-FOR-Folders
FOR /D %%parameter IN (folder_set) DO command
syntax-FOR-List of numbers
FOR /L %%parameter IN (start,step,end) DO command
syntax-FOR-File contents
FOR /F ["options"] %%parameter IN (filenameset) DO command
FOR /F ["options"] %%parameter IN ("Text string to process") DO command
syntax-FOR-Command Results
FOR /F ["options"] %%parameter IN ('command to process') DO command
Beispiel: Sucht im Ordner C:\Windows\Temp rekursiv nach Dateien mit dem Namen //temp.dat// und gibt die Liste aus. Die Option "token=*" ist notwendig, damit die Ausgabe zeilenweise gelesen wird und auch Pfade mit enthaltenem Leerzeichen ausgegeben werden können.
for /F "tokens=*" %%f in ('dir /S /b C:\Windows\Temp\temp.dat') do (
echo "%%f".
)
Zählvariablen in Zeichenketten einbetten
Um die Zählvariable %%f (%f auf der Kommandozeile) in einer Zeichenfolge zu verwenden, wird einfach die Variable in dem String eingebettet
FOR %%f IN (A B C D E) DO (
echo mitten%%fdrinnen
)
GOTO
Mit dem Batchbefehl goto wird eine Sprungmarke : (s.o.) angesprungen.
Syntax
goto NAMEDERSPRUNGMARKE
Beispiel
Siehe unter : (Doppelpunkt).
IF
Der IF Befehl ermöglicht eine einfache Verzweigung und wird oft zusammen mit dem GOTO Befehl eingesetzt. IF ermöglicht hierbei sowohl die Prüfung auf eine Gleichheit als auch auf das Vorhandensein von Dateien.
Beispiel 1:
@echo off
IF exist c:\temp\my.log echo.>c:\temp\my.log
echo.Log Datei erstellt>>c:\temp\my.log
Beispiel 1 prüft ob eine Logdatei vorhanden ist und erstellt ggf. eine Neue.
Beispiel 2:
@echo off
IF "%COMPUTERNAME%" == "Bastie" GOTO WAHR
REM hier landet man wenn der if-Ausdruck falsch ist
GOTO WEITER
:WAHR
REM hier landet man wenn der if-Ausdruck wahr ist
echo Willkommen Zuhause
REM Jetzt wird der if Zweig verlassen
GOTO WEITER
:WEITER
echo.Have a nice Day!
Beispiel 3:
IF "%COMPUTERNAME%" == "Bastie" (
echo Willkommen zu Hause!
) ELSE (
echo Du bist auf Computer: %COMPUTERNAME%
)
echo. Schönen Tag noch!
Beachten Sie, bei der Prüfung von Umgebungsvariablen niemals
IF %Umgebungsvariable% == Prüfwert ...
zu schreiben, wenn die Umgebungsvariable nicht gesetzt ist; Sie erhalten sonst einen Syntaxfehler. Der Parameter /i unterbindet eine Differenzierung der Groß-/Kleinbuchstaben.
ACHTUNG:
Bei der Verwendung mehrerer Befehle muss zwischen Bedingung und der Klammer "(" ein Leerzeichen sein.
Falsch
IF Bedingung(
Richtig
IF Bedingung (
Befehl1
Befehl2
)
Syntax Vergleiche
IF <NOT> Variable1==Variable2
IF %Variable% EQU %Variable2% (Befehl) An die Stelle von EQU kann jede der Optionen gesetzt werden.
NOT Der Befehl wird nur ausgeführt, wenn die Bedingung NICHT Wahr ist. Optional.
== ist gleich
EQU ist gleich
NEQ nicht gleich
LSS kleiner als
LEQ kleiner als oder gleich
GTR größer als
GEQ größer als oder gleich
Hinweis zu UND bzw. ODER Verknüpfung
Eine UND bzw. ODER Verknüpfung von zwei Bedingungen scheint nicht direkt möglich zu sein. Beim Vergleichen von Strings hilft es aber eventuell wenn man die beiden Strings miteinander verkettet.
Beispiel
set A=true
set B=false
if "%A%;%B%"=="true;true" (
echo A und B sind beide TRUE
) else (
echo entweder A oder B ist nicht = TRUE
)
Als Workaround können mehrere aufeinanderfolgende IFs zu einer UND bzw. ODER Verknüpfungen kombiniert werden. Bei einer ODER Verknüpfung wird der Code ausgeführt, sobald eine der Bedingungen wahr ist. Wenn alle Bedingungen geprüft wurden, und keine erfolgreich war, werden die Befehle im ELSE Zweig ausgeführt.
set A=true
set B=false
if "%A%"=="true" goto :WAHR // Diese Zeile ist doch erfüllt, also sollte der in :WAHR springen
if "%B%"=="true" goto :WAHR
REM keine der Bedingungen ist zu :WAHR gesprungen, wir sind also im ELSE Zweig
REM hier waere :FALSCH
echo Weder A noch B ist TRUE
goto :eof
:WAHR
echo A oder B ist TRUE
Für ein UND wird in den ELSE Zweig gesprungen ( :FALSCH ) sobald eine der Bedingungen nicht zutrifft. Nur wenn alle Bedingunen zutreffen wird der Code ausgeführt.
set A=true
set B=false
if "%A%"NEQ"true" goto :FALSCH
if "%B%"NEQ"true" goto :FALSCH
REM wird sind durch die IFs gekommen, also hat keine der Bedingungen angeschlagen.
REM hier waere die :WAHR Sprungmarke
echo A und B sind beide TRUE
goto :eof
:FALSCH
echo A oder B (oder beide) sind FALSE
Diese beiden Beispiele lassen sich einfach durch Kopieren der "IF..." Zeile um beliebig viele Bedingungen erweitern. Ein mischen von UND und ODER Verknüpfungen ist leider nicht ohne weiteres möglich.
PAUSE
Unterbricht die Abarbeitung der Batchdatei und wartet auf einen Tastendruck.
Syntax
pause
Interner Befehl: Ab MS-DOS bis Windows NT 5.1 (XP)
Beispiel 1:
Inhalt
@echo off
echo Willkommen zur Batchdatei %0 !!!
echo.
echo Die Batchdatei wird auf einer neuen Seite fortgeführt.
pause
cls
echo Hier fängt meine Batchdatei an...
pause
Ausgabe
Willkommen zur Batchdatei beispiel.bat !!!
Die Batchdatei wird auf einer neuen Seite fortgeführt.
Bitte beliebige Taste drücken...
(Neue Seite)
Hier fängt meine Batchdatei an...
Bitte beliebige Taste drücken...
Beispiel 2:
Inhalt
@echo off
echo Diese Zeile wird angezeigt anstelle von "Bitte beliebige Taste drücken..."
pause > NUL
Ausgabe
Diese Zeile wird angezeigt anstelle von "Bitte beliebige Taste drücken..."
Um eine Pause für eine bestimmte Zeitdauer vorzugeben, kann der ping-Befehl „missbraucht“ werden. Das folgende Beispiel erzeugt eine Pause von genau 10 Sekunden durch die Ausgabeumleitung >nul wird jegliche Meldung unterdrückt.
ping 1.2.3.4 -n 1 -w 10000 > nul
PUSHD / POPD
pushd wechselt zum angegebenen Pfad und speichert den aktuellen Pfad bis zum Aufruf von popd.
popd wechselt zum gespeicherten Pfad.
Die Befehle können geschachtelt werden.
Syntax
pushd pfad
popd
Beispiel:
C:\WINDOWS>pushd c:\temp
C:\temp>pushd c:\
C:\>popd
C:\temp>popd
C:\WINDOWS>
REM
REM leitet einen Kommentar ein. Die Zeile wird ignoriert, beachten Sie jedoch, dass REM von einem Leerzeichen / Tabulator gefolgt werden muss. Alternativ dazu werden häufig auch Sprungmarken eingesetzt, da hier nur ein statt vier Zeichen verwendet werden muss. Häufig wird jedoch die Sprungmarke zur besseren Übersicht doppelt hintereinander geschrieben ::
Beispiel:
REM kill iexplore.exe
:kill iexplore.exe
::kill iexplore.exe
START
Startet ein Programm.
Syntax:
START ["Titel"] [/D <Pfad>] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME] [/WAIT] [/B] [Befehl/Programm] [Parameter]
Optionen:
"Titel" Der Titel des neuen Fensters.
/D <Pfad> Startverzeichnis
/I Die neue Umgebung soll die dem CMD.EXE beim Aufruf übergebene sein und nicht die aktuelle Umgebung.
/MIN Startet das Fenster minimiert.
/MAX Startet das Fenster maximiert.
/SEPARATE Startet 16-Bit-Windows-Programm in separatem Speicherbereich.
/SHARED Startet 16-Bit-Windows-Programm in gemeinsamen Speicherbereich.
/LOW Startet Anwendung in IDLE-Prioritätsklasse.
/NORMAL Startet Anwendung in der NORMAL-Prioritätsklasse.
/HIGH Startet Anwendung in der HIGH-Prioritätsklasse.
/REALTIME Startet Anwendung in der REALTIME-Prioritätsklasse.
/WAIT Startet die Anwendung und wartet auf das Ende.
/B Startet die Anwendung ohne ein neues Fenster zu öffnen. Die Anwendung ignoriert STRG+C. Wenn die Anwendung nicht selbständig STRG+C überprüft, ist STRG+UNTBR die einzige Möglichkeit, um die Anwendung abzubrechen.
/? Gibt die Hilfe aus.
Hier eine Liste der nützlichen (System)Programme, die man so ausführen kann:
regedit.exe = neuer Registrierungseditor
(regedt32.exe = älterer Registrierungseditor)
explorer.exe = Windows Ordner Explorer
taskmgr.exe = Windows Taskmanager
taskeng.exe = Aufgabenplanungsmodul
calc.exe = Taschenrechner
mshta.exe = Scripthost für HTA (HTML) Scripting
W/CScript.exe = Beides Bestandteil des Windows Scripthostes für JS und VBS
iexplore.exe = Microsoft Windows Internet Explorer, Standardbrowser für Windows
firefox.exe = Mozilla Firefox, Internetbrowser
dialer.exe = Windows-Hilfeprogramm für DFÜ Einwahlverbindungen
Notepad.exe = Standard-Textbearbeitungsprogramm von Microsoft
cmd.exe = Microsoft Windows Befehlsprozessor für Batch
winword = Microsoft Word
Variablen
Es gibt zweierlei Arten von Variablen: Scriptvariablen und Systemvariablen. Die Scriptvariablen werden innerhalb von Schleifen eingesetzt, beginnen mit % und einem frei wählbaren Zeichen, oder einer Zeichenfolge. Systemvariablen müssen von % begonnen und von % abgeschlossen werden. Sie sind fest definiert. Die Variable %0% hat stets den Namen der aktuellen Datei. Die Variable %ver% hat immer den Namen der aktuellen Betriebssystemversion. Unter Windows XP muss %os% statt %ver% verwendet werden.
Gibt man unter Windows Vista und 7 den Befehl echo %os% ein, so gibt der Computer die Version des Systems aus, auf dem das System basiert. Unter Windows Vista und Windows 7 gibt es einen Befehl namens ver, mit dem man die Version direkt angezeigt bekommt. Es gibt zwar keine direkte Variable bei Vista und Windows 7, die das Betriebssystem definiert, jedoch kann man das mit folgendem Trick umgehen:
@echo off ' Autobefehlsanzeige ausgeschaltet
ver > TMP.dat ' speichert die Ausgabe des Befehls in der Datei TMP.dat
Set /p ver= < TMP.dat ' definiert die Variable des Betriebssystems. (NUR TEMPORÄR !)
echo %ver% ' gibt nun die definierte Variable aus.
pause>nul ' pause
Nützliche Stringoperation für Variablen:
Teilstring
Syntax
var:~n,m
Ergibt den Teilstring von var, beginnend mit dem n-ten Zeichen ( von links) und einer Länge von m Zeichen. Gezählt wird ab 0, d.h. das erste Zeichen hat die Position 0 und nicht 1. Werden negative Werte verwendet, so wird vom Ende des Strings /von rechts nach links) gezählt.
Beispiel:
Inhalt:
set str=myfile.bat
set name=%str:~0,6%
echo %name%
In diesem Beispiel wird der Teilstring von str vom ersten Zeichen an mit einer Länge von 6 Zeichen ausgegeben.
Ausgabe:
myfile
Stringsubstitution
Syntax
var:str1=str2
Mithilfe des Syntax var:str1=str2 kann die Zeichenkette str1 des Inhalts der Variable var durch str2 ersetzt werden.
Beispiel:
Inhalt:
set str="mycommand /p /m file"
echo %str%
set str=%str:/p /m=/t %
echo %str%
In diesem Beispiel werden die Optionen /p /m des Befehls mycommand durch die Option /t ersetzt.
Ausgabe:
"mycommand /p /m file"
"mycommand /t file"
Benutzereingaben in Variablen speichern
Um eine Benutzereingabe in eine Variable speichern zu können wird die Option /p benötigt
Beispiel:
set /p EINGABE=Variable Eingeben:
echo %EINGABE%
Mit Variablen Rechnen
Rechnungen mit Variablen sind erst mit der Option /a möglich
Beispiel:
set WERT1=2
set WERT2=21
set /a WERT1 = %WERT1%*%WERT2%
echo %WERT1%






