You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理脚本如何正确引用%10及以上的位置参数?

批处理读取10个及以上位置参数的解决方案

批处理原生语法仅支持直接引用%1~%9共9个位置参数,直接写%10会被解析为%1的返回值拼接字符0,无法正常读取第10个参数,可通过以下两种方案实现多参数读取:

方案1:使用shift命令逐个遍历参数

shift命令的作用是将所有位置参数左移一位,执行一次后原%2变为%1,原%10变为%9,以此类推,适合按顺序逐个处理参数的场景。

示例代码(temp.bat)

@echo off
setlocal enabledelayedexpansion
set /a arg_index=0

:param_loop
if "%~1"=="" goto loop_end
set /a arg_index+=1
:: 此处可直接对当前参数%1做业务处理,也可存入变量后续调用
echo 第!arg_index!个参数:%~1
shift
goto param_loop

:loop_end
echo 总参数个数:!arg_index!
endlocal
exit /b

小提示:如果需要保留前N个参数不被位移,可以使用shift /N,例如执行shift /2会保留%1不变,从%2开始左移参数。

方案2:使用for遍历%*批量存储参数

如果需要随机调用任意位置的参数,可以将所有参数存入类数组变量,后续可以直接按下标读取任意位置的参数。

示例代码(temp.bat)

@echo off
setlocal enabledelayedexpansion
set /a arg_count=0

:: 遍历全部参数并存入数组
for %%a in (%*) do (
    set /a arg_count+=1
    set "arg[!arg_count!]=%%~a"
)

:: 演示读取任意位置参数
echo 第10个参数:!arg[10]!
echo 第20个参数:!arg[20]!
echo 总参数个数:!arg_count!

endlocal
exit /b

内容的提问来源于stack exchange,提问作者JustenDouma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:15:03