Die Agentur

Kompetenzen

Födermittel Check

DREIZACK Store

OPC Suite

Support

Projekt in der Pipeline?

Ob Beratung, Angebot oder Anregungen. Wir sind für Sie stets über unser Kontakt-
formular erreichbar.


Shopify Partner

+49 (0) 345 778 990 50

Einführung in Batch Skripte Part 1

Lesedauer: ca. 5 Minuten

Viele von euch kennen sie und wer um tägliche Routineaufgaben herumkommen will, kommt an ihnen nicht vorbei - die Rede ist von Batch-Skripten. Viele Aufgaben lassen sich mit Batch-Skripten schnell und relativ einfach erledigen und in Verbindung mit dem Windows Aufgabenplaner sogar zeitlich steuern und automatisieren. Dazu muss man nicht unbedingt ein Programmierer sein. Wie du auch ohne Programmierkenntnisse deine eigenen Skripte schreibst und was es zu beachten gilt, erfährst du in dieser Serie. Im ersten Teil gehen wir auf die Basics der Eingabeaufforderung ein, erklären die Funktionsweise von Batch-Skripten und schreiben unsere ersten kleinen Skripte. Und los geht!
Geschrieben von Christian Figul
overview
overview
Übersicht
Projekt starten

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-Softwarebefindet, 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.