bat默认只能获取到1-9个参数,分别用%1 %2 ... %9引用,而%0表示运行的bat命令。如果传给bat的参数大于9个,可以用shift。
当然还可以使用 %\* 来获取全部的参数。
SHIFT [/n]
如果命令扩展名被启用, SHIFT 命令支持/n 命令行开关;该命令行开关告诉命令从第 n 个参数开始移位; n 介于零和八之间。例如:
SHIFT /2
会将 %3 移位到 %2,将 %4 移位到 %3,等等;并且不影响 %0 和 %1。
@echo off
set allparam=
:param
set str=%1
if "%str%"=="" (
goto end
)
set allparam=%allparam% %str%
shift /0
goto param
:end
if "%allparam%"=="" (
goto eof
)
rem remove left right blank
:intercept_left
if "%allparam:~0,1%"==" " set "allparam=%allparam:~1%"&goto intercept_left
:intercept_right
if "%allparam:~-1%"==" " set "allparam=%allparam:~0,-1%"&goto intercept_right
:eof
echo %allparam%
pause
参考文献:
bat获取所有的参数