Schiebeoperatoren

Ändert die Position von Batchparametern in einer Batchdatei.

Syntax

shift [/n <N>]

Parameter

Parameter BESCHREIBUNG
/n <N> Gibt an, dass mit dem Verschieben beim N-ten Argument begonnen wird, wobei N zwischen 0 und 8 liegt. Dieser Befehl erfordert Befehlserweiterungen, die standardmäßig aktiviert sind.
/? Zeigt die Hilfe an der Eingabeaufforderung an.

Bemerkungen

  • Der Befehl shift ändert die Werte der Batchparameter %0 bis %9, indem jeder Parameter in den vorherigen kopiert wird. Der Wert von %1 wird in %0 kopiert, der Wert von %2 wird in %1 kopiert usw. Dies ist hilfreich, um eine Batchdatei zu schreiben, die denselben Vorgang für eine beliebige Anzahl von Parametern ausführt.

  • Wenn die Befehlserweiterungen aktiviert sind, unterstützt der Befehlshift die Befehlszeilenoption /n. Die Option /n gibt an, dass mit dem Verschieben beim N-ten Argument begonnen wird, wobei N zwischen 0 und 8 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. Befehlserweiterungen sind standardmäßig aktiviert.

  • Sie können mit dem Befehl shift eine Batchdatei erstellen, die mehr als 10 Batchparameter akzeptieren kann. Wenn Sie mehr als 10 Parameter in der Befehlszeile angeben, werden die Parameter, die nach dem zehnten Parameter (%9) angezeigt werden, nacheinander in %9 verschoben.

  • Der Befehl shift hat keinen Einfluss auf den %*- Batchparameter.

  • Es gibt keinen Befehl für Rückwärts-shift. Nachdem der Befehl shift ausgeführt wurde, können Sie den Batchparameter (%0), der vor der Verschiebung vorhanden war, nicht wiederherstellen.

Beispiele

Geben Sie Folgendes ein, um mit einer Batchdatei mit dem Namen Mycopy.bat eine Liste von Dateien in ein bestimmtes Verzeichnis zu kopieren:

@echo off
rem MYCOPY.BAT copies any number of files
rem to a directory.
rem The command uses the following syntax:
rem mycopy dir file1 file2 ...
set todir=%1
:getfile
shift
if "%1"=="" goto end
copy %1 %todir%
goto getfile
:end
set todir=
echo All done