SHIFT

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

Syntax
      SHIFT [/n]

Key
   /n    Start at the nth argument, where n may be between zero and eight. 


Examples:

Given %1=the, %2=quick, %3=brown
SHIFT
will result in %1=quick, %2=brown
A second
SHIFT
will result in %1=brown

Given %1=the, %2=quick, %3=brown, %4=fox
SHIFT /2
will result in %1=the, %2=brown, %3=fox

Parse Command Line Arguments

:start
if "%1"=="" (goto :main)
:: Do whatever with token %1
Echo [%1]
:: Shift %2 into %1
SHIFT
goto :start

:main
::

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

If SHIFT is used to move a text parameter into %0 then any references to %0 will refer instead to the current working directory, unless the new parameter value happens to contain a valid path.

For example:
%0\..\MyExecutable.exe will run MyExecutable from the same directory as the Batch file.

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


The SHIFT command will not work within brackets, so place all your command line arguments in variables before running any FOR commands or other bracketed expressions. (Alternatively use call syntax as explained in this forum thread.)

SHIFT is an internal command. If Command Extensions are disabled, the SHIFT command will not support the /n switch

“A small key opens big doors" ~ Turkish Proverb

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


© Copyright SS64.com 1999-2013
Some rights reserved