如何从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
相关产品推荐
相关产品推荐

