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


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



Back to the Top

© Copyright SS64.com 1999-2013
Some rights reserved