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

如何从MyBatch.bat批处理文件中获取脚本参数值?

获取批处理脚本中的参数值

针对你的调用方式 MyBatch.bat -param1=abc -param2="def jkl",可以通过以下两种方法提取参数值:

方法一:字符串截取匹配

直接通过判断参数前缀,截取等号后的内容:

@echo off
setlocal enabledelayedexpansion

:: 初始化参数变量
set "param1="
set "param2="

:: 遍历所有传入参数
for %%a in (%*) do (
    set "arg=%%~a"
    :: 匹配param1并提取值
    if "!arg:~0,8!"=="-param1=" set "param1=!arg:~8!"
    :: 匹配param2并提取值
    if "!arg:~0,8!"=="-param2=" set "param2=!arg:~8!"
)

:: 输出结果
echo param1的值:%param1%
echo param2的值:%param2%

endlocal
  • %* 表示所有传入的命令行参数
  • %%~a 会自动去除参数外层的引号,确保"def jkl"能被正确处理为def jkl
  • 启用enabledelayedexpansion是为了在循环中动态读取变量的实时值

方法二:按等号分割键值对

这种方法更通用,适配不同长度的参数名:

@echo off
setlocal enabledelayedexpansion

set "param1="
set "param2="

for %%a in (%*) do (
    :: 用等号分割参数为键和值
    for /f "tokens=1,2 delims==" %%b in ("%%~a") do (
        set "key=%%b"
        set "value=%%c"
        :: 根据键名赋值
        if "!key!"=="-param1" set "param1=!value!"
        if "!key!"=="-param2" set "param2=!value!"
    )
)

echo param1:%param1%
echo param2:%param2%

endlocal
  • for /f 配合delims==将每个参数拆分成键(%%b)和值(%%c)
  • 无需关注参数名长度,只要键名匹配即可赋值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:31:13