Polecenie: "SHIFT" jest włączone Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. dostępne
Przykłady polecenia "SHIFT"
The
`SHIFT`polecenie w wierszu poleceń systemu Windows służy do przesuwania pozycji parametrów w pliku wsadowym. Oto kilka przykładów użycia
`SHIFT`-Komenda:
Przykład 1: Iteracja parametrów w pliku wsadowym:
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END
Opis: W tym przykładzie zastosowano pętlę do iteracji po wszystkich parametrach w pliku wsadowym i wyświetlenia ich jeden po drugim. Komenda
`SHIFT`służy do przesuwania pozycji parametrów.
Przykład 2: Suma parametrów w pliku wsadowym:
@ECHO OFF
SET CAŁKOWITY=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A CAŁKOWITY+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO całkowity: %CAŁKOWITY%
Opis: W tym przykładzie parametry są sumowane w pętli. Komenda
`SHIFT`przesuwa pozycję parametru oraz
`SET /A`służy do aktualizacji sumy.
Przykład 3: Praca z zagnieżdżonymi pętlami i SHIFT:
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
Opis: Ten przykład pokazuje, jak to zrobić
`SHIFT`można używać w zagnieżdżonych pętlach. Pętla zewnętrzna przetwarza parametry zewnętrzne, podczas gdy pętla wewnętrzna przetwarza parametry wewnętrzne.
Przykład 4: Pomijanie parametrów za pomocą SHIFT:
@ECHO OFF
SHIFT
SHIFT
ECHO Trzeci Parameter: %1
Opis: Tutaj dwa pierwsze parametry są używane z dwoma kolejnymi
`SHIFT`polecenia są pomijane i wyświetlany jest trzeci parametr.
Przykład 5: Sprawdź i obsłuż parametry:
@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
ECHO Debug-Tryb aktywowany.
SHIFT
GOTO PARAM_LOOP
)
ECHO Proces Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM
Opis: Ten przykład sprawdza, czy pierwszym parametrem jest „/DEBUG”. W takim przypadku generowany jest komunikat i parametr jest pomijany.
The
`SHIFT`polecenie jest szczególnie przydatne w skryptach wsadowych, gdzie należy przetworzyć zmienną liczbę parametrów. Zauważ to
`SHIFT`przenosi zawartość listy parametrów i ponownie przypisuje pozycje parametrów. Dlatego jest to ważne
`SHIFT`Używaj mądrze i zgodnie z logiką swojego skryptu wsadowego.
"SHIFT" Fragment Pomocy systemu Microsoft Windows
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\Windows>
Zmienia polozenie wymiennych parametrów w pliku wsadowym.
SHIFT [/n]
Przy wlaczonych poleceniach rozszerzen polecenie SHIFT obsluguje
przelacznik
/n, którego uzycie powoduje, ze polecenie przesuwa od n-tego
argumentu,
gdzie n moze byc z przedzialu miedzy zero a osiem. Na przyklad:
SHIFT /2
przesunie %3 do %2, %4 do %3 itd. i pozostawi %0 oraz %1.
Ważna informacja, wskazówki dotyczące polecenia "SHIFT"
Podczas korzystania z
`SHIFT`polecenia w skryptach wsadowych, należy wziąć pod uwagę kilka ważnych aspektów:
1.
Utrata parametrów: Jeśli
`SHIFT`powoduje to przesunięcie pozycji parametrów na liście parametrów w lewo. Oznacza to, że wartość pierwszego parametru (
`%1`) przez drugi parametr (
`%2`) zostanie zastąpiony, drugi parametr stanie się trzecim (
`%3`), i tak dalej. Wartość ostatniego parametru (
`%9`) zostaje utracona, a wartość
`%0`(nazwa skryptu) pozostaje niezmieniona.
2.
Ilość zmian: Można
`SHIFT`tylko dziewięć razy w skrypcie wsadowym, ponieważ istnieje tylko dziewięć parametrów numerycznych (
`%0`dopóki
`%9`) daje. Po dziewiątej zmianie wartość dziewiątego parametru pozostaje utracona.
3.
SHIFT w pętlach: Jeśli
`SHIFT`w pętli powinieneś upewnić się, że warunki zostały poprawnie sprawdzone, aby uniknąć nieskończonej pętli, jeśli nie ma innych parametrów.
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP
4.
SHIFT w zagnieżdżonych pętlach: Jeśli
`SHIFT`w zagnieżdżonych pętlach należy pamiętać, że przenoszenie parametrów w pętli wpływa również na pozycje parametrów w zagnieżdżonych pętlach.
@ECHO OFF
:OUTER_LOOP
IF "%1"=="" GOTO END_OUTER
ECHO Outer Parameter: %1
SHIFT
:INNER_LOOP
IF "%1"=="" GOTO END_INNER
ECHO Inner Parameter: %1
SHIFT
GOTO INNER_LOOP
:END_INNER
GOTO OUTER_LOOP
:END_OUTER
5.
Opóźniona ekspansja i SHIFT: Jeśli tak
`SHIFT`w połączeniu z opóźnioną ekspansją (
`ENABLEDELAYEDEXPANSION`), zauważ to
`!`nie jest używany do opóźnionego rozszerzania
`%`.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO Liczba Parameter: %COUNT%
Ważne jest, aby wziąć pod uwagę kolejność i częstotliwość
`SHIFT`planuj ostrożnie, aby mieć pewność, że parametry zostaną przesunięte zgodnie z oczekiwaniami i żadne informacje nie zostaną utracone. Sprawdzanie również pustych parametrów (
`IF "%1"==""`) jest ważne, aby uniknąć nieskończonych pętli.