Freigeben über


shift

Ändert die Position von Batchparametern in einer Batchdatei.

Syntax

shift [/n <N>]

Parameters

Parameter Description
/n <N> Gibt an, dass die Verschiebung beim N-tenArgument beginnen soll, wobei N ein beliebiger Wert zwischen 0 und 8 ist. Erfordert Befehlserweiterungen, die standardmäßig aktiviert sind.
/? Zeigt hilfe an der Eingabeaufforderung an.

Remarks

  • Mit dem Umschaltbefehl werden die Werte der Batch-Parameter %0%9 geändert, indem jeder Parameter in den vorherigen kopiert wird – der Wert von %1 wird in %0kopiert, der Wert von %2 wird in %1kopiert usw. Dies ist nützlich zum Schreiben einer Batchdatei, die denselben Vorgang für eine beliebige Anzahl von Parametern ausführt.

  • Wenn Befehlserweiterungen aktiviert sind, unterstützt der Befehl shift die Befehlszeilenoption /n . Die Option /n gibt an, dass die Verschiebung beim N-ten Argument beginnen soll, wobei N ein beliebiger Wert zwischen 0 und 8 ist. Mit UMSCHALT /2 werden z. B. %3 auf %2, %4 auf %3usw. verschoben, sodass %0 und %1 davon unberührt bleiben. Befehlserweiterungen sind standardmäßig aktiviert.

  • Sie können den Umschaltbefehl verwenden, um eine Batchdatei zu erstellen, die mehr als 10 Batchparameter akzeptieren kann. Wenn Sie mehr als 10 Parameter auf der Befehlszeile angeben, werden die Parameter, die nach dem zehnten (%9) angezeigt werden, nacheinander in %9verschoben.

  • Der Shift-Befehl hat keine Auswirkungen auf den %* Batch-Parameter.

  • Es gibt keinen Rückwärts-Shift-Befehl . Nachdem Sie den Shift-Befehl implementiert haben, können Sie den Batch-Parameter (%0), der vor der Verschiebung vorhanden war, nicht wiederherstellen.

Examples

Geben Sie Folgendes ein, um eine Batch-Datei mit dem Namen Mycopy.batzu verwenden, um 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