Look here : processing switches
Although this is oriented toward using the format /username argument1 it's relatively easy to adapt to username=argument1 but there is a problem with = when passed within "a" parameter - it's seen as a separator, so the receiving routine would see two parameters, but they'd be paired (username and argument1.)
Really depends on quite how you want to process the data. You can, if you so desire, pass the parameter "quoted" to get over the = is a separator problem, then use
for /f "tokens=1,*delims==" %%a in ("%~1") do set "%%a=%%b"
but remembering to use the quoting may be a stumbling block.
Note: using the procedure I've pointed to is not restricted by parameter-count.