batch-file
Befehlszeilenargumente für die Stapeldatei
Suche…
Befehlszeilenargumente für Batchdateien
Befehlszeilenargumente der Stapeldatei sind Parameterwerte, die beim Starten des Stapels übergeben werden. Sie sollten in Anführungszeichen gesetzt werden, wenn sie Leerzeichen enthalten. In einer laufenden Batch - Datei werden die Argumente für verschiedene Zwecke, dh Umleitung verwendet :labels
, Setzen von Variablen oder die Ausführung von Befehlen.
Auf die Argumente wird in der Stapeldatei mit %1, %2, ..., %9
verwiesen.
@echo off
setlocal EnableDelayedExpansion
if not "%1"=="" (
set "dir=%~1" & set "file=%~2"
type !dir!\!file! | find /n /i "True" >nul^
&& echo Success! || echo Failure
)
exit /b
C:\Users\UserName> test.bat "C:\Temp\Test Results" "Latest.log"
Success!
Anmerkungen:
- In dem obigen Beispiel werden doppelte Anführungszeichen mit dem Argumentmodifizierer
%~1
. - Lange Zeichenfolgen werden mit
^
in mehrere Zeilen aufgeteilt, und vor dem Zeichen in der nächsten Zeile ist ein Leerzeichen.
Batchdateien mit mehr als 9 Argumenten
Wenn mehr als 9 Argumente angegeben werden, kann der Befehl shift [/n]
verwendet werden, wobei /n
bedeutet, dass er beim n-ten Argument beginnt, n zwischen null und acht liegt.
Durchgehen von Argumenten:
:args
set /a "i+=1"
set arg!i!=%~1
call echo arg!i! = %%arg!i!%%
shift
goto :args
Beachten Sie, dass im obigen Beispiel die verzögerte Erweiterungsvariable i
verwendet wird, um dem Variablenarray Argumentwerte zuzuweisen. Der call
ermöglicht die Anzeige solcher Variablenwerte innerhalb der Schleife.
Argumente zählen:
for %%i in (%*) do (set /a ArgCount+=1)
echo %ArgCount%
Setzen Sie eine Variable auf das n-te Argument:
set i=5
call set "path%i%=%%~i"
Argumente in Klammern verschieben
Wir haben die folgende example.bat
und rufen sie mit den Argumenten 1
, 2
und 3
:
@echo off
(
shift
shift
echo %1
)
Da sich die Variablenerweiterung ändert, nachdem der Kontext der Endklammern erreicht ist, wird folgende Ausgabe ausgegeben:
1
Da dies ein Problem sein kann, wenn Sie zwischen den Klammern wechseln, um auf das Argument zuzugreifen, müssen Sie den Aufruf verwenden:
@echo off
(
shift
shift
call echo %%1
)
jetzt ist die Ausgabe 3
. Da der Befehl CALL
verwendet wird (was zu einer zusätzlichen Variablenerweiterung führt), können mit dieser Methode die Argumente, auf die zugegriffen wird, auch parametrisiert werden:
@echo off
set argument=1
shift
shift
call echo %%%argument%
mit verzögerter Expansion:
@echo off
setlocal enableDelayedExpansion
set argument=1
shift
shift
call echo %%!argument!
die Ausgabe wird sein
3