Einführung
Oft ist es nötig, einem Batch-Scripting dem Batch Parameter zu übergeben, damit Anweisungen bearbeitet werden können. Im folgenden kleinen Beispiel wird gezeigt, wie man in der cmd Parameter übergeben kann.
Parameter eine Batch-Script übergeben
Es soll ein Script erstellt werden, welches einen Ordner anlegt. Das Besondere ist jetzt, dass der Name des Ordners dem Script übergeben wird. Fachlich spricht man dabei von Variablen. Im Prinzip sind dies Platzhalter.
Es wird also dem Batch eine Variable übergeben oder man könnte auch sagen der cmd werden Parameter übergeben. In diesem Beispiel wird das Verzeichnis angelegt und der Name erst durch den Übergabeparameter festgelegt.
@echo off md %1
Aufgerufen wird das Script mit der unten dargestellten Codezeile. Wobei der Name des Skripts „parameter.bat“ lautet und dieses unter dem Pfad c:scripte gespeichert wurde.
Wem nicht klar ist, woher die Endung „.bat“ kommt und wie man diese erstellt, dem empfehle ich den Artikel: So schreibt man ein Batch-Script durchzulesen.
c:\scripte>parameter.bat testordner
Batch Parameter dem Script übergeben
Der übergebene Parameter wird in die Variable %1 gespeichert. Anschließend wird mit md (make directory) das Verzeichnis erstellt. Der Ordner wird natürlich im gleichen Verzeichnis angelegt, von welchem das Script ausgeführt wird.
Der Ordner liegt nun im Verzeichnis c:scripte. Mehrere übergebene Parameter werden der Reihe nach dann in %1, %2, etc. gespeichert. Die Variablen, mit den Parametern, werden der Reihe nach, nach dem Skriptnamen angehängt. Interessant ist noch die Ausgabe %0. Den hier steht der Name des aufgerufenen Scripts.
Funktionsweise der IF-Anweisung beim Batch-Script
Erweitern wir das Script nun mit einer kleinen Überprüfung, ob ein Parameter übergeben worden ist. Hierfür bedienen wir uns einer einfachen if – Anweisung inklusiver Sprungmarken. Schauen wir uns als Erstes den Quellcode an.
@echo off if %1.==. goto: FEHLER goto:eof
:FEHLER
echo Das Script muss folgendermaßen aufgerufen werden: %0 Ordnername
Mit der if-Bedingung prüfen wir, ob ein Parameter übergeben worden ist. Innerhalb eines Batch-Scriptes kann man nicht auf null prüfen, darum verwenden wir den Punkt. Es könnte auch jedes andere Zeichen verwendet werden.
D. h. wenn in %1 nichts drinnen steht, so ist die Bedingung wahr, weil Punkt gleich Punkt ist. Deshalb springt das Script mit der Anweisung goto zu der Sprungmarke FEHLER. Dort geben wir an, wie das Script richtig aufgerufen werden muss.
Hier verwenden wir jetzt die Variable %0. Nicht vergessen, da drinnen steht der Name des Scripts. Wenn jetzt beim Aufruf des Scripts kein Ordnername übergeben wurde, so wird uns aufgezeigt, wie wir das Script ausführen müssen.
Sofern wir einen Ordner übergeben wird dieser angelegt und das Script wird mit goto:eof (end of file) beendet.
Videoanleitung – Grundlagen PowerShell Cmdlets
Ausblick zum Batch-Scripting und Zukunft
Batch-Scripte sind relativ einfach und schnell erstellt. Das obige Beispiel beschreibt im Wesentlichen drei wichtige Funktionen von Batch-Scripten: Der cmd Parameter übergeben, if-Abfragen und Sprungmarken.
Das Batch-Scripting wird aber auch immer mehr von der Windows PowerShell abgelöst. Das liegt wohl auch daran, dass die Windows PowerShell viel mehr Optionen anbietet.
Bei der PowerShell handelt es sich um ein objektorientierte Skriptsprache, dadurch ergeben sich viel mehr Anwendungsmöglichkeiten. Du findest in diesem Blog viele Anleitung zu Windows PowerShell. Für einen kurzen Überblick kann ich dir folgenden Artikel empfehlen.
Möchtest du wissen, wie man mit der Windows PowerShell Parameter einem Skript übergeben kann, so findest du dazu im folgenden Beitrag eine Anleitung:
Ich kann dir auf alle Fälle empfehlen, sich mit der Windows PowerShell näher zu beschäftigen. Langfristig ist eine Systemadministration ohne diese nicht mehr denkbar.
Trotzdem ist für einfache Anwendungen ein Batch-Script immer noch sehr von Vorteil. Mit der oben vorgestellten Parametereingabe ergeben sich viele Anwendungsmöglichkeiten.
Eine davon wäre z. B. die Prüfung, ob eine Datei oder ein Ordner vorhanden ist, was eben dadurch erreicht wird, indem man der cmd Parameter übergibt. So was wäre das sinnvoll beim Prüfen von Logfiles, was in der Administration eine große Bedeutung hat.
Empfehlenswerte Kurse zum Scripting unter Windows
Das könnte ich auch interessieren:
- Einfaches Windows Backupscript zum Sichern von Verzeichnissen und Dateien – Mit Windows Boardmitteln ein Batch Backupscript erstellen
- Batch – Datentypen finden – So findet man mithilfe der cmd und einem kleine Batch Script sämtliche Datentypen
- Batch-Script Ausgaben speichern – so lassen sich die erzeugten Ausgaben in der Eingabeaufforderung speichern!
- Windows sicherer machen – Windows Scripting Host deaktivieren
- Eine Aufgabe mit der Windows PowerShell erstellen und die Administration damit automatisieren
Weiterführende Literatur
- Schwichtenberg, Holger (Autor)
Dieser Artikel beinhaltet Partner-Links. Durch einen Klick darauf gelangt ihr direkt zum Anbieter. Solltet ihr euch dort für einen Kauf entscheiden, erhält IT-Learner eine kleine Provision. Der Preis ändert sich für euch nicht. Danke für eure Unterstützung! Letzte Aktualisierung am 18.11.2023
Steigere dein Wissen
Kostenlose Befehlsreferenzen und E-Books herunterladen
OMG DANKEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE!
Ich tüftel schon ewig daran, warum
if %1 EQU nul
nicht geht!
Erklärung: Batch schließt das Programm bei Fehlern statt sie anzuzeigen und mit > log.txt kann man sie auch nicht abgreifen.