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



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow