如何通过另一变量的内容作为名称访问批处理变量
批处理中间接访问变量值的实现方案
场景1:直接传入目标变量名,输出其值
命令行输入:
batch.bat myVar
批处理脚本(batch.bat)有两种实现方式:
方法1:用call命令实现
@echo off call echo %%~1%%
方法2:用延迟环境变量扩展
@echo off setlocal enabledelayedexpansion echo !%1! endlocal
原理:%1是脚本接收的第一个参数(即你传入的变量名)。call方式会把%%~1%%解析成%myVar%后执行echo;延迟扩展则是启用延迟后,通过!%1!直接间接引用变量值。
场景2:传入存储变量名的变量,输出目标变量的值
先提前定义变量:
set var_name=APPDATA
命令行输入:
batch.bat var_name
批处理脚本(batch.bat)写法:
方法1:call命令嵌套引用
@echo off call set "target_var=%%~1%%" call echo %%target_var%%
方法2:延迟扩展方式
@echo off setlocal enabledelayedexpansion set "target_var=!%1!" echo !target_var! endlocal
原理:先通过!%1!或%%~1%%拿到传入变量var_name的值APPDATA,再通过这个值间接引用对应的系统变量APPDATA的内容。
内容的提问来源于stack exchange,提问作者jwka
相关产品推荐
相关产品推荐

