Batch Skripte (DOS) Teil 1

Auch in Zeiten von VBSkript und Powershell hat die DOS-Kommandoshell nicht vollkommen an Bedeutung verloren.

Batch Skript

Routineaufgaben lassen sich mittels Batch Skript automatisieren. Eine bestimmte Folge von Befehlen wird dabei der Reihe nach eingegeben und vom System bearbeitet. Solche relativ einfachen Befehlsfolgen lassen sich in so genannten Skripten automatisieren. Es gibt diverse Skriptsprachen, die die Möglichkeit bieten diese Befehlsfolgen automatisch ablaufen zu
lassen.Beispiel:
  • Login-Skripte für Server
  • Einfache Backup-Routinen

Im Prinzip handelt es sich hierbei um eine einfache Art und Weise der Programmierung. Der Unterschied zwischen Skripten und Programmen besteht im wesentlichen nur darin, dass bei Skripten
jede Anweisung der Reihe nach vom Rechner interpretiert und anschließend ausgeführt wird. Skripte sind meist auch recht kurz. Programme führen meist eine aufwändigere Aufgabe aus und bei ihnen werden i. d. R. erst alle Anweisungen in für den Computer verständliche Befehle übersetzt und dann das Programm als ganzes gestartet.

Beim Programmieren (egal ob Skript oder Programm) muss man eine Reihe von Anweisungen vorgeben, die der Computer dann abarbeitet. Dabei muss man diverse Randbedingungen beachten.
Vergisst man z.B. eine wichtige Bedingung, dann geht das Programm schief bzw. es kommt zu einem Absturz. Die Befehle müssen einer genauen Syntax folgen, sonst werden sie nicht erkannt. Es gibt sehr viele Programmier- und Skriptsprachen.

Ein einfaches Beispiel: Ich will einen Roboter programmieren, der das Badewasser einlaufen lassen soll. Dieser Roboter würde in unserem Beispiel normales Deutsch verstehen. Ich sage ihm also:

  • Gehe zur Badewanne
  • Öffne den Wasserhahn

Was passiert nun?

Der Roboter geht zur Badewanne und öffnet den Wasserhahn. Was passiert aber nun wenn die Wanne voll ist? Wie warm wird das Wasser wohl sein? Der Roboter (und auch unser PC) hat keine Intuition und wird also die Wanne mit zu heissem oder zu kaltem Wasser überlaufen lassen.

Korrekter müssten die Anweisungen also lauten

  • Gehe zur Badewanne
  • Öffne den Wasserhahn
  • Stelle das Wasser auf 38° ein
  • Schliesse den Wasserhahn, wenn der Wasserstand x
    erreicht ist

CMD versus BAT

Batch Skripte mit der Endung .bat verwenden den alten Befehlszeilenprozessor. Speichern Sie daher Ihr Skript mit der Endung .cmd.

 Los gehts: DOS-Umgebung starten

Unter Windows lässt sich die DOS-Umgebung mittels

  • Start > Ausführen > cmd

starten.

Es erscheint dann der schwarze Bildschirm mit weisser Schrift
und dem sogenannten Prompt (im folgenden Beispiel
C:Dokumente und EinstellungenLars>

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:Dokumente und EinstellungenLars>   //<-prompt

Hier können die möglichen Skript-Befehle eingegeben und getestet werden.

.cmd Datei
starten

Ein einfacher Doppelklick auf die Datei führt sie zwar aus, man
sieht jedoch nicht, was ausgegeben wird. Deshalb muss man, wie
oben beschrieben, ein DOS Fenster öffnen. Nun zieht man die
Datei einfach per Drop&Drag in das DOS Fenster hinein. Mit der
Enter-Taste führt man das Skript aus.

  Grundaufgaben

 EDIT

Edit ruft den Editor unter DOS auf. Man kann zwar auch den unter
Windows verwenden, jedoch werden dann die Umlaute dort nicht
richtig kodiert.Gib einfach die Befehle im Editor ein und speichere die Datei
mit der Endung CMD.

 ECHO

Der Befehl echo zeigt Meldungen an und gibt Texte aus.Beispiele:

echo hallo

Zeigt hallo am Bildschirm an

echo on

Anzeige von Befehlen einschalten

echo off

Anzeige von Befehlen ausschalten

@echo

Verhindert, dass echo selbst angezeigt wird

 Variablen – 1. Teil

In den DOS-Skript-Dateien kann man auch Variablen verwenden.
Variablen sind verschiedene Werte, die man über den gleichen
Ausdruck ansprechen kann. Du kennst das vielleicht vom
Taschenrechner: Du kannst ein Rechenergebnis auf einen Speicher
nehmen und später mit diesem weiterrechen.Variablen
sind immer mit % gekennzeichnet.
Beispiel:
%MusterVariabel%


Sytemvariablen time und date

DOS hat einige vordefinierte Variablen, dazu gehören z.B. %date%
und %time%.

Ausgabeumleitung

Mit dem Zeichen > kann eine Ausgabe in eine Datei umgeleitet
werden.Dabei legt > immer eine neue Datei an. Das Zeichen » hängt an
eine bereits vorhandene Datei an.
echo Jetzt ist %time% >> C:LOGlog1.txt

DOS
Befehle

Mit den folgenden Befehlen kann man per DOS das Selbe verändern,
wie man es sonst im Windows Explorer per Mausklick tut.

CD

Mit CD wechselt man das Verzeichnis.Beispiel

CD Test

Wechselt in ein vorhandenes Unterverzeichnis Test

CD ..

Wechselt ein Verzeichnis nach oben

CD 

Wechselt in das Stammverzeichnis – Will man das Laufwerk
wechseln, gibt man einfach den Buchstaben gefolgt von einem
Doppelpunkt an (also z.B. C:, D:)

MD

MD legt ein Unterverzeichnis unter dem gerade aktuellen an.Beispiel:

MD Test

RD

RD löscht ein Unterverzeichnis. Dieses muss aber leer sein.Beispiel

RD Test

PAUSE

Pause hält das laufende Programm an und wartet auf einen
Tastendruck.

COPY

Mit dem COPY-Befehl kopiert man eine einzelne Datei.Beispiel:

COPY logtest1.cmd logcopy.cmd

XCOPY

Mit dem XCOPY-Befehl kopiert man einzelne oder mehrere Dateien.
XCOPY ist etwas flexibler als COPY.Beispiel:

XCOPY g:internet d:lw_ginternet /s /e /c /r /h /k /y

kopiert den Inhalt von g:internet nach d:lw_ginternet

TYPE

Type gibt den Inhalt einer Datei aus.

FIND

FIND <suchbegriff> findet alle Zeilen, die den <suchbegriff>
beeinhalten.
FIND benötigt den zu durchsuchenden Input von einer Quelle, z.B.
vom Type-Befehl.

 Die Hilfe

In der Hilfe werden alle Parameter aufgelistet von jedem Befehl.
Die Hilfe erscheint immer durch: Musterbefehl /?
Beispiel:

XCOPY /?

Variablen – 2. Teil

Variablen lassen sich auch neu definieren und zuweisen.

Aufgabe – Teste das folgende Skript
%cd% ist eine Systemvariable und enthält das aktuelle
VerzeichnisBeispiel:

set CurrentDir=%cd%
echo %CurrentDir%

Stringbeandlung

Eine Variable, die einen Text enthält, bezeichnet man auch als
String. Ab und zu ist es nötig, dass man Strings bearbeitet
(z.B. einzelne Teile daraus auschneidet.)

SET DIR123=%CD%
SET DRIVE123=%DIR123:~0,2%
echo DIR123=%DIR123%
pause

%date% gibt das Datum aus (klar, oder?)
%date:~0,2% gibt die ersten 2 Zeichen von %date% aus
%date:~0,3% gibt die ersten 3 Zeichen aus
%date:~3,5% gibt 5 Zeichen aus, beginnend bei Zeichen Nr. 3

GOTO

Mit GOTO kann zu einer Sprungmarke verweist werden.Die
Sprungmarke beginnt immer mit einem Doppelpunkt.In der Regel muss abhängig von einer Bedingung etwas
ausgeführt werden. Dies kann z.B. sein, ob ein bestimmter Befehl
erfolgreich war oder nicht. Das funktioniert z.B. auch mit dem
Ping-Befehl.

Beispiel:

@echo off
set serverip=192.168.121.239
ping -n 1 -w 1000 %serverip% >nul
if not errorlevel 1 (
echo %serverip% ist erreichbar
goto end
) else (
echo %serverip% ist nicht erreichbar
)
:end

Quellen

Achtung!

Dieser Artikel wurde automatisiert vom alten CMS übernommen. Dort war er zuletzt am 12.02.2016 geändert worden. Bei der Konvertierung können sich Fehler eingeschlichen haben, wie zum Beispiel falsche Zeilenumbrüche, fehlende Bilder oder fehlende Zeichen. Wenn du einen solchen Fehler entdeckst, dann schreibe doch bitte einen Kommentar, damit ich das beheben kann.

Vielen Dank für deine Mühe.


Hat dir der Artikel gefallen? Dann freue ich mich, wenn du ein Like hinterlässt und ihn teilst.
Herzlichen Dank.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.