Einführung in Batch Skripte Part 1
Was sind Batch-Skripte?
Batch-Skripte oder Batch-Dateien sind Aneinanderreihungen von Konsolen-Befehlen, die nacheinander ausgeführt werden. Konsolen-Befehle? Nicht jedes Programm hat eine schöne Benutzeroberfläche. Normalerweise lassen sich Programme auch über die Konsole bzw. über das Terminal, auch Eingabeaufforderung in Windows genannt, aufrufen und steuern.
Trau dich! Tippe in die Suchleiste deiner Taskbar cmd
ein oder suche nach der Eingabeaufforderung. Ein schwarzes Fenster öffnet sich wie dieses:

Dein erster Konsolen-Befehl
Ein Programm starten
Links neben dem blinkenden Cursor siehst du den aktuellen Verzeichnispfad in dem du dich befindest. Das was im Windows Explorer mit schönen Grafiken aus Ordnern und Dateien abgebildet ist, ist nichts anderes als eine Baumstruktur, die du auch hier wieder findest.
Wir befinden uns also gerade auf Festplatte C:\
im Ordner Users
und Unterordner Useradmin
.
Globale Programme
Einige Programme lassen sich global aufrufen. Also egal in welchem Ordner du dich befindest. Du kannst sie jederzeit durch einfache Befehle starten.
Versuchs mit dem Befehl calc
C:\Users\Useradmin> calc
Der Taschenrechner sollte sich öffnen.
Die Eingabeaufforderung hat auch einige nützliche Tools, die wir später noch brauchen werden. zB. gibt dir der Befehl date
das aktuelle Datum aus, was sehr nützlich ist, wenn man beispielsweise täglich ein Backup erstellen möchte mit dem Datum im Dateinamen. Aber dazu später mehr
Lokale Programme
Um andere Programme zu starten, die nicht global verfügbar sind, musst du dich wie auch im Windows Explorer durch die Verzeichnisse navigieren. Das funktioniert mit dem Befehl cd
Befehlsexkurs: cd – Change Directory, dir – Directory
cd MeinUnterordner
navigiert dich eine Ebene tiefer in den Dateibaum als würdest du einen Ordner öffnen.
cd ..
navigiert dich wieder eine Ebene höher oder „zurück“.
Wenn wissen willst welche Unterordner sich in deinem aktuellen Verzeichnis befinden, versuchs mit dir
.
Wenn du den Weg genau kennst, kannst du auch gleich mehrere Ebenen tiefer gehen, zB so:
cd MeinUnterordner/MeinUnterUnterordner
Sollte ein Ordner mal Leerzeichen enthalten, schreib den Pfad in Anführungszeichen
cd "Mein Unterordner/Mein Unter Unterordner"
Bist du bei deinem Programm angekommen, startest du es einfach indem du den vollständigen Namen angibst.
Praxisbeispiel: Start der JTL Ameise
Die JTL Ameise liegt im Programmverzeichnis von JTL Software wo auch die JTL Wawi installiert ist. Wir navigieren also zurück bis zur Festplatte und von dort aus zum JTL Verzeichnis und starten die Ameise.
Tipp: Schreibst du die ersten paar Zeichen eines Ordnernamens und drückst die Tabulator Taste, wird der Name der Datei oder des Verzeichnisses automatisch ergänzt. Gibt es mehrere Treffer, kannst du durch die Treffer mit erneutem Drücken auf die Tabulator Taste durch gehen und so auch ganze Pfade zusammenstellen.
C:\Users\Useradmin> cd ..
C:\Users> cd ..
C:\> cd "Program Files(x86)\JTL-Software"
C:\Program Files(x86)\JTL-Software> JTL-wawi-ameise.exe
Die Ameise startet. Herzlichen Glückwunsch.
Parameter
Programme lassen sich nicht einfach nur starten, sondern auch durch Hinzugabe von Parametern steuern. Parameter sind fest Vorgaben für Werte, die du an den Programmstart anhängst, um bestimmte Funktionen auszulösen.
Programmstart mit Parameter
Wir bleiben bei der Ameise:Du kannst beispielsweise --help
an die Ameise hängen.
C:\Program Files(x86)\JTL-Software> JTL-wawi-ameise.exe --help
Was sich nun öffnet ist die Konsolenversion der Ameise. Neben Versionsinformationen werden dir alle Parameter angezeigt, die du zum Start der Ameise per Konsole und auch per Batch Skript verwenden kannst. Du kannst Parameter jeweils mit einem Leerzeichen getrennt aneinander hängen. Teilweise wird es auch erforderlich sein bestimmte Parameter anzugeben, weil du sonst einen Fehler zurück bekommen wirst.
Manche Parameter erwarten einen Wert bzw. geben dir die Möglichkeit einen anderen als den Standardwert anzugeben. Das erkennst du daran, dass du an den Parameter ein =
und dahinter deinen Wert angibst.
Achtung! Denk immer daran. Leerzeichen, Groß- und Kleinschreibung und auch sonst jedes Zeichen hat hier einen besonderen Wert. Jeder Tippfehler hat Auswirkungen auf das Ergebnis deines Programmaufrufs. Wenn du also zB per Parameter einen Dateipfad angeben kannst und dieser ein Leerzeichen enthält, dann gilt hier das gleiche wie beim cd.
-Befehl: Anführungszeichen verwenden!
Praxisbeispiel: Ameisen Export per Konsolenaufruf mit Parametern
Zugangsdaten parat? Wir machen uns an unseren parametrisierten Programmaufruf!
Wir wollen per Konsole die Ameise starten und einen Export anstoßen.Durch den --help
Parameter haben wir erfahren, dass --server
(Server), --database
(Datenbank), --dbuser
User, --dbpass
(Password), --templateid
Exportvorlagen ID und --outputfile
(Name der Exportdatei) Pflichtfelder sind. Zugegeben…die Dokumentation hätte genauer sein dürfen…*hust* typisch *hust*… 😉
In der Ameise habe ich im Vorfeld eine Exportvorlage angelegt und mir die ID gemerkt. Wie das geht erklären wir in einem kommenden Tutorial
Starten wir also unser erstes Programm mit Parameterübergabe:
C:\Program Files(x86)\JTL-Software> JTL-wawi-ameise.exe --server=".\JTLWAWI" --database=eazybusiness --dbuser=sa --dbpass="sa04jT14" --templateid=EXP3 --outputfile="C:\Users\Useradmin\Desktop\export.csv"
Achte darauf, dass du alles hintereinanderweg schreibst und nicht versuchst einen Zeilenumbruch zu machen. Wenn du innerhalb einer Befehlszeile einen Zeilenumbruch machen möchtest, musst du den Umbruch mit einem ^
ankündigen. Danach kannst du Enter drücken für eine neue Zeile und die Konsole weiß, dass die Zeilen noch zusammen gehören.
Wenn du alles eingegeben hast, drücke Enter.Der Export startet und auf eurem Desktop liegt die exportierte Datei. Hervorragend!
Absolute und relative Pfade
Wie ihr seht habe ich als --outputfile
den kompletten Pfad bis zum Desktop inkl. des Dateinamens angegeben. Das ist wichtig und wird beim Thema Batch Skripte noch viel wichtiger. Pfade können nämlich absolut und relativ angegeben werden.
Absolute Pfade
Absolute Pfade meint, dass der Pfad von der Wurzel, zB der Festplatte bis zur Datei komplett angegeben wird.
#Absoluter Pfad zum Desktop
C:\Users\Useradmin\Desktop
#Aufruf der JTL Ameise über absoluten Pfad vom Desktop aus
C:\Users\Useradmin\Desktop>"C:\Program Files(x86)\JTL-Software\JTL-wawi-ameise.exe
Relative Pfade
Relative Pfade haben ihren Ursprung dort wo euer Skript oder euer Programm gerade läuft. Wenn ihr euch im Verzeichnis befindet wo die JTL Ameise liegt, könnt ihr sie durch Angabe des relativen Pfades starten so wie oben.
Seid ihr in einem anderen Verzeichnis, müsst ihr entweder den vollständigen, absoluten Pfad zur Ameise angeben, oder einen relativen Pfad, der zu der Ameise führt. Viele Wege führen nach Rom. Im Zweifel ist der absolute Pfad der einfachste Weg.
Gebt ihr beispielsweise nur den Dateinamen an --outputfile="export.csv"
geht das Programm von einem relativen Pfad aus. Da Ihr euch gerade in C:\Program Files (x86)\JTL-Software
befindet, wird das Programm versuchen die Datei in C:\Program Files (x86)\JTL-Software\export.csv
zu schreiben, was in diesem Fall nicht geht, weil es ein Systempfad ist auf dem Ihr keine Schreibrechte besitzt, aber das geht hier zu weit.
Zwischenstand
Es gibt eine Unmenge an Konsolenprogrammen, die es euch erlauben mit kurzen Befehlen große Aufgaben zu erledigen: Dateiexport, SQL Befehle/Exporte, Datei-Up- und Download…
Hier hilft wie immer googlen. Aber keine Sorge. Wir gehen noch auf ein paar wichtige Programme ein. Im nächsten Beitrag bewegen wir uns endlich von der Konsole zum Skript.