Know-how

Hier werde ich versuchen dem Leser verschiedene IT-relevante Themen näher zu bringen. Ich bin jetzt nicht dabei Wikipedia oder andere themenbezogene Seiten zu kopieren oder gar zu ersetzen. Ich werde es nur auf meine Weise erzählen, vielleicht hilft es dem einen oder anderen den Stoff noch besser zu verstehen ;-)


Batch Files

Geschichte

Microsoft DOS, eine Kommandozeile Interace (CLI), erschien im Jahr 1981 für IBM Computer. Die letzte Version 6.22 kam 1994 heraus. Obwohl MS-DOS heutzutage kaum noch benutzt wird, (unter anderem weil es nicht Multi-User fähig war), ist die Kommandozeile in jede Windows Version vorhanden.

Argumente

Die Argumente werden beim Aufruf der Batchdatei mitgegeben. Die angegebene Werte werden in der Batchdatei mit %1 %2 etc... aufgerufen.
copy DateiA.txt DateiB.txt
%1 = DateiA und %2 = DateiB

Variablen

Setzten: SET NAME=Harry
Aufrufen: %NAME%

Kommentar-(Zeile)

Eine Kommando-Zeile innerhalb der Batchdatei wird mit den REM-Befehl (Remark) auskommentiert und somit nicht ausgeführt.
REM ECHO Hallo Welt

Konditionale Schleifen

IF-Schleife
IF EXISTS file.txt DEL file.txt
IF NOT EXISTS file.txt ECHO no file found

FOR-Schleife
Die FOR-Schleife ermöglicht etwas für eine angegebene Anzahl durchzuführen:
for {each item} in ({collection of items}) do {command}
FOR /l %%X IN (1,1,99) DO ECHO %%X

Errorlevel

Mittels den Errorlevel kann man den sog. return code des ausgeführten Programms prüfen und dementsprechend reagieren.
IF %ERRORLEVEL% == 0 ECHO Alles gut
IF %ERRORLEVEL% == -1 ECHO Ohoh es ist schief gelaufen!

Goto

Dank den GOTO-Befehl kann man die Batchdatei einfach unterteilen - sowas wie Subprozeduren -, um nicht doppelt zu programmieren oder Fehlermeldung besser an den Mann zu bringen.
IF EXISTS file.txt GOTO :append
GOTO :eof

:append
REM append zu datei
ECHO xyz >> file.txt


Spezielle Charaktere

Zeichen Funktion Beispiel
> Sendet den Output zum gegebenen Dateinamen.
Achtung überschreibt vorhandenen Inhalt, wenn die Datei bereits existiert!
echo blabla > bla.txt
>> Fügt den Inhalt zum gegebenen Dateiinhalt hinzu. echo blabla2 >> bla.txt
| Der "pipe" leitet den Ouput des ersten Programms zum zweiten Programm weiter. dir | more
@ Schaltet die Ausgabe des Kommandos ein oder aus @echo off

Kommando Liste

Kommando Funktion Beispiel
call Führt eine andere Batchdatei aus und geht erst dann weiter call andereBatch
cd Zeigt den jetzigen Ordnernamen an oder ändert diesen cd Ordnername
cls Leert den Konsolenbildschirm
copy Kopiert die angegebene Datei von A nach B copy file.txt file2.txt
del Löscht die angegebene Datei del file.txt
echo Gibt den folgenden Text auf den Bildschirm oder in einer Datei aus echo Hallo
exit Endet die Ausführung der Batchdatei
pause Unterbricht die Ausführung bis eine Taste vom Benutzer gedrückt wird



Beispiel Skript

@echo off
cls
rem enter ethernet adapter name as variable (REQUIRED)
set eth="Local Area Connection"
:START
echo Loading adapter settings for %eth% ...
netsh interface ip show address %eth%
:MENU
echo ----------------------------------------------------------------------
echo              QuickNetworkSwitcher 1.2 - By Richard Quignon
echo ----------------------------------------------------------------------
echo.
echo    1. Home (fixed IP)
echo.
echo    2. DHCP
echo.
echo    3. Enter custom IP
echo.
echo    4. Change adapter: %eth%
echo.
echo    x  Exit
echo.
set /p choice=Please choose IP-address scheme:

if "%choice%"=="1" goto :HOME
if "%choice%"=="2" goto :DHCP
if "%choice%"=="3" goto :CUSTOM
if "%choice%"=="4" goto :CHANGEADAPTER
if "%choice%"=="x" goto :eof
exit

:CHANGEADAPTER
netsh interface show interface
set /p neweth=Enter fullname with "" or x to cancel:
if %neweth%==x goto :MENU
set eth=%neweth%
goto :START

:HOME
echo.
echo Set %eth% to 192.168.0.5/24 and Gateway 192.168.0.1
echo.
netsh interface ip set address name=%eth% static 192.168.0.5 255.255.255.0 192.168.0.1 1
netsh interface ip set dns name=%eth% source="static" addr="192.168.0.1" register="primary"
echo.
pause
exit

:DHCP
echo.
echo Set %eth% to DHCP
echo.
netsh interface ip set address name=%eth% source="dhcp"
netsh interface ip set dns name=%eth% source="dhcp" addr="none"
echo.
pause
exit

:CUSTOM
echo.
echo Enter local host IP Address, subnetmask and default gateway IP-address
echo.
set /p hip=Localhost IP adresse:
set /p sn=subnet maske        :
set /p gip=Default gateway IP  :
echo.
netsh interface ip set address name=%eth% static %hip% %sn% %gip% 1
netsh interface ip set dns name=%eth% source="static" addr="%gip%" register="primary"
echo.
pause
exit

Nach oben