Change the position of command line parameters in a batch file.
Syntax
SHIFT [/n]
for example:
given %1=the, %2=quick, %3=brown
SHIFT
will result in %1=quick, %2=brown
alternatively given %1=the, %2=quick, %3=brown
SHIFT
SHIFT
will result in %1=brown
/n tells the SHIFT command to start shifting at the nth argument,
where n may be between zero and eight.
for example:
given %1=the, %2=quick, %3=brown, %4=fox
SHIFT /2
will result in %1=the, %2=brown, %3=fox
%0 is the name of the batch file itself - %1 can be shifted into %0
Relative pathnames
The parameter %0 will initially refer to the path that was used to execute the
batch - this could be MyBatch.cmd if in the current directory or a full path
like C:\apps\myBatch.cmd
When SHIFT is used to move a text parameter into %0 then references to %0 will
refer to the current working directory, unless those parameters happen to contain
a valid path.
For example:
%0\..\MyExecutable.exe
will run the executable from the same directory
If the following parameter is passed to myBatch.cmd
myBatch.cmd D:\utils\
Then the following commands in myBatch will run MyExecutable.exe from the directory
D:\utils\
SHIFT
%0\..\MyExecutable.exe
If Command Extensions are disabled, the SHIFT command
will not support the /n switch
"If NumLock is on, pressing a key on the numeric keypad while holding SHIFT overrides NumLock and instead generates an arrow key" - OldNewThing
Related:
CALL - Call one batch program from another
SET - Display or edit environment variables
powershell: param( $var1, $var2,... )
Equivalent bash command (Linux): shift - Shift positional parameters