小编use*_*274的帖子

批处理文件:如何使用已存储在字符串中的变量名称来获取变量的值

1)快速示例:

set a="Hello"
set d="a"
Run Code Online (Sandbox Code Playgroud)

现在,如何使用(变量值)得到"a"的值d?例如,变量名可能是由用户使用提示输入的,或者变量的名称可能已发送到函数.

这些想法都不起作用:

set e=%%d%%

set e=%%%d%%%

set e=set e=%%d%%
%e%
Run Code Online (Sandbox Code Playgroud)

经过一个小时的头脑风暴和谷歌搜索,我想出了这个,但它似乎太复杂和笨拙 - 真的没有其他/更容易的方式吗?:

set a="Hello"
set b="Good day"
set c="Good night"

set /p d="Give me a variable name"

call :GetVarVal %%%d%%% "e"

REM This now gives the correct value:
echo %e%

goto :eof

:GetVarVal
  set "%~2=%~1"
goto :eof
Run Code Online (Sandbox Code Playgroud)

2)此外,有类似的,有更好的方法来做到这一点(理想情况下没有自定义功能):

set a="C:\Users\Blah\Documents\MP4Box\MP4Box.exe"

call :get_drive_and_path a

echo %b%

goto :eof

:get_drive_and_path
  set b=%~dp1
goto :eof
Run Code Online (Sandbox Code Playgroud)

谢谢!

string variables batch-file command-prompt

9
推荐指数
2
解决办法
2万
查看次数

标签 统计

batch-file ×1

command-prompt ×1

string ×1

variables ×1