I have a question regarding command parameters (%1, %2, %3, etc…)
I have a program that accepts command parameters.
for example: programm.exe –A paramA –B paramB –C paramC –D paramD
in this case
%1 would be –A
%2 would be paramA
%3 would be –B
%4 would be paramB etc.
not all of these command parameters are necessary to start the program. one other thing is that it doesn’t matter in what order/sequence the parameters are entered. (e.g: programm.exe –D paramD –A paramA –C paramC –B paramB) with a for command how can I find out what parameters do exist
first of all I want to find out if one of those given even parameters (%2, %4, %6, %8) contain paramA
I could do this like:
if /I %2==paramA goto somewhere
if /I %4==paramA goto somewhere
if /I %6==paramA goto somewhere
if /I %8==paramA goto somewhere
::
: somewhere
:: in case someone sets the command parameter to A (-A) it replaces it with a parameter given from the system (for example the data content from %host% which was determined earlier in this script)
if %1==-A set Aparam=-A %host%
if %3==-A set Aparam=-A %host%
if %5==-A set Aparam=-A %host%
if %7==-A set Aparam=-A %host%
if %1==-C set Cparam=-C %2
if %3==-C set Cparam=-C %4
if %5==-C set Cparam=-C %6
if %7==-C set Cparam=-C %8
if %1==-B set Bparam=-B %2
if %3==-B set Bparam=-B %4
if %5==-B set Bparam=-B %6
if %7==-B set Bparam=-B %8
.
.
.
.
the problem I have here is if some command parameters are not given. eg: programm.exe –A paramA –B paramB here, only %1, %2, %3 and %4 are given. %5, %6, %7, %8 are not.
the program gets error because
if %1==-C set Cparam=-C %2
if %3==-C set Cparam=-C %4
if %5==-C set Cparam=-C %6
if %7==-C set Cparam=-C %8
if %1==-B set Bparam=-B %2
if %3==-B set Bparam=-B %4
if %5==-B set Bparam=-B %6
if %7==-B set Bparam=-B %8
%5, %6, %7, %8 (bold) is not used!!
how would you check first which command parameters are given/used? How would you do this checks with a for loop
unfortunately i'm not into batch scripting too much. hope it's not too difficult to understand what i was trying to say
thanks for your help
handle command line parameters %1, %2, %3, %4 ....
Moderator: DosItHelp
Re: handle command line parameters %1, %2, %3, %4 ....
Try this example:
Regards
aGerman
Code: Select all
@echo off &setlocal
:loop
if "%~1"=="" goto exitLoop
set "option=%~1"
set "%option:~1%param=%option% %~2"
shift
shift
goto loop
:exitLoop
set "host=www.dostips.com"
if defined Aparam set "Aparam=-A %host%"
:: only to show what we got
echo\Aparam=%Aparam%
echo\Bparam=%Bparam%
echo\Cparam=%Cparam%
echo\Dparam=%Dparam%
pause
Regards
aGerman