Wie bereits erwähnt, kann auf Parameter, die über die Befehlszeile übergeben werden, in Batchdateien mit der Notation %1
to zugegriffen werden %9
. Es gibt auch zwei andere Token, die Sie verwenden können:
%0
ist der Name der ausführbaren Datei (Batchdatei), wie in der Befehlszeile angegeben .
%*
sind alle in der Befehlszeile angegebenen Parameter - dies ist sehr nützlich, wenn Sie die Parameter an ein anderes Programm weiterleiten möchten.
Neben dem einfachen Zugriff auf die Parameter sind auch viele wichtige Techniken zu beachten.
Überprüfen, ob ein Parameter übergeben wurde
Dies geschieht mit Konstrukten wie IF "%~1"==""
, was genau dann zutrifft, wenn überhaupt keine Argumente übergeben wurden. Beachten Sie das Tilde-Zeichen, das dazu führt, dass umgebende Anführungszeichen aus dem Wert von entfernt werden %1
. Ohne Tilde erhalten Sie unerwartete Ergebnisse, wenn dieser Wert doppelte Anführungszeichen enthält, einschließlich der Möglichkeit von Syntaxfehlern.
Umgang mit mehr als 9 Argumenten (oder einfach das Leben leichter machen)
Wenn Sie auf mehr als 9 Argumente zugreifen müssen, müssen Sie den Befehl verwenden SHIFT
. Dieser Befehl verschiebt die Werte aller Argumente um eine Stelle, sodass %0
der Wert von %1
, %1
der Wert von %2
usw. %9
den Wert des zehnten Arguments (falls vorhanden) annimmt, das vor dem Aufruf SHIFT
(enter) über keine Variable verfügbar war Befehl SHIFT /?
für weitere Optionen).
SHIFT
Dies ist auch nützlich, wenn Sie Parameter einfach verarbeiten möchten, ohne dass sie in einer bestimmten Reihenfolge angezeigt werden müssen. Zum Beispiel kann ein Skript , um die Fahnen erkennt -a
und -b
in beliebiger Reihenfolge. Eine gute Möglichkeit, die Befehlszeile in solchen Fällen zu analysieren, ist
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Mit diesem Schema können Sie ziemlich komplexe Befehlszeilen analysieren, ohne verrückt zu werden.
Ersetzung von Chargenparametern
Für Parameter, die Dateinamen darstellen, bietet die Shell zahlreiche Funktionen für die Arbeit mit Dateien, auf die auf keine andere Weise zugegriffen werden kann. Auf diese Funktionalität wird mit Konstrukten zugegriffen, die mit beginnen %~
.
Verwenden Sie beispielsweise, um die Größe der als Argument übergebenen Datei zu ermitteln
ECHO %~z1
Um den Pfad des Verzeichnisses abzurufen, von dem aus die Batchdatei gestartet wurde (sehr nützlich!), Können Sie verwenden
ECHO %~dp0
Sie können den gesamten Bereich dieser Funktionen anzeigen, indem Sie CALL /?
die Eingabeaufforderung eingeben .