Der Befehl: "SHIFT" ist auf Windows 12, 11, 10, .. , MS Server 2025, 2022, 2019, .. verfügbar
Die Beispiele zum Befehl "SHIFT"
Der
`SHIFT`-Befehl in der Windows-Eingabeaufforderung wird verwendet, um die Position der Parameter in einer Batch-Datei zu verschieben. Hier sind einige Beispiele für die Verwendung des
`SHIFT`-Befehls:
Beispiel 1: Durch Parameter in einer Batch-Datei iterieren:
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END
Beschreibung: Dieses Beispiel verwendet eine Schleife, um durch alle Parameter in einer Batch-Datei zu iterieren und sie nacheinander anzuzeigen. Der Befehl
`SHIFT` wird verwendet, um die Position der Parameter zu verschieben.
Beispiel 2: Parameter in einer Batch-Datei summieren:
@ECHO OFF
SET SUMME=0
:ADD_LOOP
IF "%1"=="" GOTO END_ADD
SET /A SUMME+= %1
SHIFT
GOTO ADD_LOOP
:END_ADD
ECHO Summe: %SUMME%
Beschreibung: In diesem Beispiel werden die Parameter in einer Schleife aufsummiert. Der Befehl
`SHIFT` verschiebt die Parameterposition, und
`SET /A` wird verwendet, um die Summe zu aktualisieren.
Beispiel 3: Mit verschachtelten Schleifen und SHIFT arbeiten:
@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
Beschreibung: Dieses Beispiel zeigt, wie
`SHIFT` in verschachtelten Schleifen verwendet werden kann. Die äußere Schleife verarbeitet äußere Parameter, während die innere Schleife die inneren Parameter verarbeitet.
Beispiel 4: Überspringen von Parametern mit SHIFT:
@ECHO OFF
SHIFT
SHIFT
ECHO Dritter Parameter: %1
Beschreibung: Hier werden die beiden ersten Parameter mit zwei aufeinanderfolgenden
`SHIFT`-Befehlen übersprungen, und der dritte Parameter wird angezeigt.
Beispiel 5: Parameter überprüfen und behandeln:
@ECHO OFF
:PARAM_LOOP
IF "%1"=="" GOTO END_PARAM
IF /I "%1"=="/DEBUG" (
ECHO Debug-Modus aktiviert.
SHIFT
GOTO PARAM_LOOP
)
ECHO Verarbeite Parameter: %1
SHIFT
GOTO PARAM_LOOP
:END_PARAM
Beschreibung: In diesem Beispiel wird überprüft, ob der erste Parameter
"/DEBUG" ist. Wenn dies der Fall ist, wird eine Meldung ausgegeben, und der Parameter wird übersprungen.
Der
`SHIFT`-Befehl ist besonders nützlich in Batch-Skripten, in denen eine variable Anzahl von Parametern verarbeitet werden muss. Beachte, dass
`SHIFT` den Inhalt der Parameterliste verschiebt und Parameterpositionen neu zuweist. Daher ist es wichtig,
`SHIFT` mit Bedacht und entsprechend der Logik deines Batch-Skripts zu verwenden.
"SHIFT" Auszug aus der Microsoft Windows-Hilfe
Microsoft Windows [Version 10.0.19045.3693]
(c) Copyright 1985-2023 Microsoft Corp.
C:\\WINDOWS>
Verändert die Position ersetzbarer Parameter in einem Batchprogramm.
SHIFT [/n]
Wenn die Befehlserweiterungen aktiviert sind, unterstützt der SHIFT-Befehl
die /n-Option. Damit wird mit dem Verschieben beim n-ten Argument begonnen,
wobei n zwischen Null und Acht liegt. So wird zum Beispiel durch
SHIFT /2
das Argument %3 nach %2, %4 nach %3 usw. verschoben, während die
Argumente %0 und %1 nicht verschoben werden.
Wichtige Informationen, Tipps zum Befehl "SHIFT"
Beim Verwenden des
`SHIFT`-Befehls in Batch-Skripten gibt es einige wichtige Aspekte zu beachten:
1.
Parameterverlust: Wenn du
`SHIFT` aufrufst, verschiebt dies die Position der Parameter in der Parameterliste nach links. Das bedeutet, dass der Wert des ersten Parameters (
`%1`) durch den des zweiten Parameters (
`%2`) ersetzt wird, der zweite Parameter wird zum dritten (
`%3`), und so weiter. Der Wert des letzten Parameters (
`%9`) geht verloren, und der Wert von
`%0` (der Skriptname) bleibt unverändert.
2.
Anzahl der Verschiebungen: Du kannst
`SHIFT` nur neunmal in einem Batch-Skript aufrufen, da es nur neun numerische Parameter (
`%0` bis
`%9`) gibt. Nach der neunten Verschiebung bleibt der Wert des neunten Parameters verloren.
3.
SHIFT in Schleifen: Wenn du
`SHIFT` in einer Schleife verwendest, solltest du sicherstellen, dass die Bedingungen richtig überprüft werden, um eine Endlosschleife zu vermeiden, wenn keine weiteren Parameter vorhanden sind.
@ECHO OFF
:LOOP
IF "%1"=="" GOTO END_LOOP
ECHO Parameter: %1
SHIFT
GOTO LOOP
:END_LOOP
4.
SHIFT in verschachtelten Schleifen: Wenn du
`SHIFT` in verschachtelten Schleifen verwendest, beachte, dass das Verschieben der Parameter in einer Schleife auch die Parameterpositionen in den verschachtelten Schleifen beeinflusst.
@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.
Verzögerte Expansion und SHIFT: Wenn du
`SHIFT` in Kombination mit verzögerter Expansion (
`ENABLEDELAYEDEXPANSION`) verwendest, beachte, dass
`!` für verzögerte Expansion verwendet wird, nicht
`%`.
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET COUNT=0
:LOOP
IF "!1"=="" GOTO END_LOOP
SET /A COUNT+=1
SHIFT
GOTO LOOP
:END_LOOP
ECHO Anzahl der Parameter: %COUNT%
Es ist wichtig, die Reihenfolge und Häufigkeit von
`SHIFT` sorgfältig zu planen, um sicherzustellen, dass die Parameter wie erwartet verschoben werden und keine Informationen verloren gehen. Auch das Überprüfen auf leere Parameter (
`IF "%1"==""`) ist wichtig, um Endlosschleifen zu vermeiden.