Pass parameters separated by space, and assign each argument to variable as shown below. Use %* to mean “all”. For example,

echo off
set arg1=%1   // First parameter
set arg2=%2
some-command /u %arg1% /p %arg2% %*

When you run:

test-command admin password foo bar

the above batch file will run:

fake-command /u admin /p password foo bar

If you want to handle missing parameters you can do something like. Dot/period is used in equality operations,  because if %1 is empty, this will end up being IF . == . and so the GOTO will happen.

IF %1.==. GOTO No1

... do stuff...


ECHO No param 1

Argument %0 will initially refer to the path that was used to execute the batch, e.g. MyBatch.cmd if in the current directory or a full path like C:\apps\myBatch.cmd

SHIFT, change the position of command line arguments passed to a batch file. Only parameters %1 to %9 can be referenced by number, but it is possibly to pass more than 9 arguments. The SHIFT command provides a way of accessing these additional argument values.


Demobatch.cmd The Quick Brown

As 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


References :- SHIFT