我需要将10个以上的参数传递给单个批处理文件(shell脚本) 但是在第9次争论之后它将不起作用(它将从头开始)
代码示例
echo Hello! This a sample batch file.
echo %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16
pause
>mybatchdotbat a b c d e f g h i j k l m n o p
任何人都可以为此提供解决方案
答案 0 :(得分:2)
您可以使用%*
获取所有参数并使用for
循环解析它们:
for %%i in (%*) do echo %%i
注意:您的参数可能不包含某些字符("标准分隔符"),例如,
或;
,除非您引用它们:
mybatch.bat first second "this is the third" "four, not five" five 6 7 8 9 ...
答案 1 :(得分:1)
基本上,%10
被解释为%1
0
。
要解决这个问题,在批处理文件或shell脚本中,您可以将第一个参数保存在变量中,然后使用shift
将所有剩余参数递减1.当您调用shift
时,%1
(shell脚本中的$1
)现已消失,旧%2
变为%1
,旧%3
变为%2
等。有关详细信息,请参阅this answer。
在shell脚本中,您还可以使用${10}
引用第十个参数。