Batch-Skript - Funktionen

Hallo da draußen, ambitionierte Programmierer! Heute tauchen wir ein in die wunderbare Welt der Funktionen im Batch-Skripting. Als dein freundlicher Nachbarschafts-Computerlehrer bin ich aufgeregt, dich auf dieser Reise zu führen. Also hole dir ein Getränk deiner Wahl und los geht's!

Batch Script - Functions

Was sind Funktionen?

Bevor wir ins Detail gehen, lassen wir uns klar werden, was Funktionen sind. Stell dir Funktionen als kleine Helfer in deinem Skript vor. Sie sind wie Mini-Programme in deinem Hauptprogramm, die spezifische Aufgaben erledigen. Genau wie du einen Freund um Hilfe bei einer bestimmten Aufgabe bitten könntest, kannst du diese Funktionen anrufen, um spezifische Aufgaben in deinem Skript zu erledigen.

Funktion Definition

Nun lernen wir, wie man diese hilfreichen kleinen Freunde erstellt. In Batch-Skripting definieren wir Funktionen mit Labels. Hier ist die grundlegende Struktur:

:functionName
REM Dein Funktionencode kommt hier hin
REM ...
REM ...
goto :eof

Lassen wir das auseinanderbrechen:

  1. :functionName ist das Label, das den Anfang deiner Funktion markiert.
  2. Die Zeilen nach dem Label enthalten den tatsächlichen Code deiner Funktion.
  3. goto :eof sagt dem Skript, zur End-of-File-Marke zu springen, was effektiv das Ende der Funktion bedeutet.

Hier ist ein einfaches Beispiel:

:sayHello
echo Hello, World!
goto :eof

Diese Funktion wird, wenn aufgerufen, einfach "Hello, World!" in die Konsole schreiben.

Funktionen aufrufen

Nun, da wir eine Funktion erstellt haben, wie verwenden wir sie? Wir benutzen den Befehl call. Hier ist wie:

@echo off
call :sayHello
pause

:sayHello
echo Hello, World!
goto :eof

Wenn du dieses Skript ausführst, wird esFolgendes ausgeben:

Hello, World!
Drücke eine beliebige Taste, um fortzufahren . . .

Der call-Befehl sagt dem Skript, die sayHello-Funktion auszuführen.

Funktionen mit Parametern

Funktionen werden noch leistungsfähiger, wenn wir ihnen Informationen übermitteln können. Diese Informationen werden Parameter genannt. Lassen wir unsere sayHello-Funktion anpassen, um eine bestimmte Person zu begrüßen:

@echo off
call :sayHello John
pause

:sayHello
echo Hello, %~1!
goto :eof

Ausgabe:

Hello, John!
Drücke eine beliebige Taste, um fortzufahren . . .

In diesem Beispiel repräsentiert %~1 den ersten Parameter, der an die Funktion übergeben wird. Wenn wir sayHello John aufrufen, wird "John" der erste Parameter.

Funktionen mit mehreren Parametern

Wir können einer Funktion mehrere Parameter übergeben. Lassen wir eine Funktion erstellen, die zwei Zahlen addiert:

@echo off
call :addNumbers 5 3
pause

:addNumbers
set /a result=%~1 + %~2
echo The sum of %~1 and %~2 is %result%
goto :eof

Ausgabe:

The sum of 5 and 3 is 8
Drücke eine beliebige Taste, um fortzufahren . . .

Hier repräsentiert %~1 den ersten Parameter (5) und %~2 den zweiten Parameter (3).

Werte aus Funktionen zurückgeben

In Batch-Skripting geben Funktionen keine Werte in der traditionellen Weise zurück. Allerdings können wir Umgebungsvariablen verwenden, um dieses Verhalten zu simulieren:

@echo off
call :multiply 6 7
echo The result is %result%
pause

:multiply
set /a result=%~1 * %~2
goto :eof

Ausgabe:

The result is 42
Drücke eine beliebige Taste, um fortzufahren . . .

In diesem Beispiel setzt die multiply-Funktion eine Variable result, die wir dann in unserem Hauptskript verwenden können.

Lokale Variablen in Funktionen

Wenn man mit Funktionen arbeitet, ist es oft eine gute Idee, lokale Variablen zu verwenden, um die Interferenz mit Variablen im Hauptskript zu vermeiden. Wir können dies mit den Befehlen setlocal und endlocal tun:

@echo off
set globalVar=I'm global
call :localVarDemo
echo After function call: %globalVar%
pause

:localVarDemo
setlocal
set globalVar=I'm local
echo Inside function: %globalVar%
endlocal
goto :eof

Ausgabe:

Inside function: I'm local
After function call: I'm global
Drücke eine beliebige Taste, um fortzufahren . . .

Der setlocal-Befehl erstellt eine neue Umgebung für die Funktion, und endlocal verwirft diese Umgebung, wenn die Funktion endet, was den ursprünglichen Wert von globalVar bewahrt.

Funktionensammlungen

Wenn deine Skripte komplexer werden, könntest du feststellen, dass du dieselben Funktionen in mehreren Skripten verwendest. Anstatt diese Funktionen in jedes Skript zu kopieren und einzufügen, kannst du eine Funktionensammlung erstellen:

  1. Erstelle eine neue Datei, nennen wir sie myFunctions.bat
  2. Lege deine常用的函数 in diese Datei
  3. Verwende im Hauptskript den call-Befehl, um diese Datei vor der Verwendung ihrer Funktionen auszuführen

myFunctions.bat:

:sayHello
echo Hello, %~1!
goto :eof

:addNumbers
set /a result=%~1 + %~2
goto :eof

mainScript.bat:

@echo off
call myFunctions.bat

call :sayHello World
call :addNumbers 10 20
echo The sum is %result%
pause

Dieser Ansatz hilft dir dabei, deinen Code organisiert und wiederverwendbar zu halten.

Häufige Funktionsmethoden

Hier ist eine Tabelle der häufigen Funktionsmethoden im Batch-Skripting:

Methode Beschreibung
call Ruft eine Funktion auf
goto :eof Beendet eine Funktion
%~1, %~2, etc. Greift auf Funktionsparameter zu
setlocal Erstellt eine lokale Umgebung für Variablen
endlocal Beendet die lokale Umgebung

Denke daran, Übung macht den Meister! Habe keine Angst, mit diesen Konzepten zu experimentieren. Erstelle deine eigenen Funktionen, spiele mit Parametern herum und sieh, was du bauen kannst. Vor dir wirst du wissen, wie man komplexe Batch-Skripte mit Leichtigkeit schreibt!

Happy coding, zukünftige Programmierer!

Credits: Image by storyset