Jak powiedzieli już inni, dostęp do parametrów przekazywanych w wierszu poleceń można uzyskać w plikach wsadowych z notacją %1
do %9
. Istnieją również dwa inne tokeny, których możesz użyć:
%0
jest nazwą pliku wykonywalnego (pliku wsadowego) podaną w wierszu poleceń .
%*
to wszystkie parametry podane w wierszu poleceń - jest to bardzo przydatne, jeśli chcesz przekazać parametry do innego programu.
Istnieje również wiele ważnych technik, o których należy pamiętać, oprócz prostego dostępu do parametrów.
Sprawdzanie, czy parametr został przekazany
Odbywa się to za pomocą konstrukcji takich jak IF "%~1"==""
, co jest prawdą wtedy i tylko wtedy, gdy w ogóle nie podano żadnych argumentów. Zwróć uwagę na znak tyldy, który powoduje usunięcie wszystkich otaczających cudzysłowów z wartości %1
; bez tyldy otrzymasz nieoczekiwane wyniki, jeśli ta wartość zawiera podwójne cudzysłowy, w tym możliwość wystąpienia błędów składniowych.
Obsługa więcej niż 9 argumentów (lub po prostu ułatwianie życia)
Jeśli potrzebujesz dostępu do więcej niż 9 argumentów, musisz użyć polecenia SHIFT
. To polecenie przesuwa wartości wszystkich argumentów o jedno miejsce, tak że %0
przyjmuje wartość %1
, %1
przyjmuje wartość %2
itd. %9
Przyjmuje wartość dziesiątego argumentu (jeśli jest obecny), który nie był dostępny dla żadnej zmiennej przed wywołaniem SHIFT
(enter KomendaSHIFT /?
aby uzyskać więcej opcji).
SHIFT
przydaje się również, gdy chcesz łatwo przetwarzać parametry bez wymagania, aby były one prezentowane w określonej kolejności. Na przykład skrypt może rozpoznać flagi -a
i -b
w dowolnej kolejności. W takich przypadkach dobrym sposobem na przeanalizowanie wiersza poleceń jest
: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!
Ten schemat pozwala analizować dość złożone wiersze poleceń bez popadania w szaleństwo.
Zastąpienie parametrów partii
W przypadku parametrów, które reprezentują nazwy plików, powłoka zapewnia wiele funkcji związanych z pracą z plikami, które nie są dostępne w żaden inny sposób. Dostęp do tej funkcji można uzyskać za pomocą konstrukcji rozpoczynających się od%~
.
Na przykład, aby uzyskać rozmiar pliku przekazanego jako argument, użyj
ECHO %~z1
Aby uzyskać ścieżkę do katalogu, z którego został uruchomiony plik wsadowy (bardzo przydatne!), Możesz użyć
ECHO %~dp0
Pełen zakres tych możliwości można wyświetlić, wpisując CALL /?
w wierszu polecenia.