Home NT Commands
NT Syntax

SHIFT

Change the position of command line parameters in a batch file.

syntax
      SHIFT [/n]

for example:
given %1=one, %2=two, %3=three...
SHIFT
will result in %1=two, %2=three

alternatively given %1=one, %2=two, %3=three...
SHIFT & SHIFT
will result in %1=three

/n tells the SHIFT command to start shifting at the nth argument, where n may be between zero and eight.

for example:
given %1=one, %2=two, %3=three, %4=four...
SHIFT /2
will result in %1=one, %2=three, %3=four

%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

Related commands

CALL - Call one batch program from another
SET
- Display or edit environment variables

Equivalent Linux BASH commands:

shift - Shift positional parameters



Simon Sheppard
SS64.com