我需要使用一个字符串格式的变量内容,作为其他变量的名称并调用该变量内容。
类似的东西:
set upd1= c:\test1
set testval=upd1
set upd=%testval%
echo %upd%
结果是upd1,我想得到结果显示c:\ test1
答案 0 :(得分:2)
你应该改变
set testval=upd1
为set testval=%upd1%
答案 1 :(得分:1)
试试这个:
@ECHO OFF &SETLOCAL
set "upd1= c:\test1"
set "testval=upd1"
set "upd=testval"
ECHO %upd%
CALL ECHO %%%upd%%%
CALL CALL ECHO %%%%%%%upd%%%%%%%
输出:
testval
upd1
c:\test1
答案 2 :(得分:1)
@echo off
setlocal enabledelayedexpansion
set name=foo
set foo=bar
echo !%name%!
回应“酒吧”。
答案 3 :(得分:0)
@ECHO OFF
SETLOCAL
set upd1= c:\test1
set testval=upd1
::
:: First way - if value may not begin "="
::
FOR /f "tokens=1*delims==" %%i IN ('set %testval%') DO IF /i "%%i"=="%testval%" SET upd2=%%j
ECHO(first way+%upd2%+
ENDLOCAL
SETLOCAL
set upd1=x====== c:\test1
set testval=upd1
::
:: Second way - value may begin "="
::
FOR /f "delims=" %%i IN ('set %testval%') DO ECHO %%i|FINDSTR /i /b /l /c:"%testval%=" >nul&IF NOT ERRORLEVEL 1 SET upd2=%%i
CALL SET upd2=%%upd2:*%testval%=%%
SET upd2=%upd2:~1%
ECHO(second way+%upd2%+
SET upd
GOTO :EOF
根据您的情况,这有两种方式。注意我已将名称upd
更改为upd2
,以便使用最终的set
命令进行简单比较。另外,upd1
的原始值包含空格;因此我添加了一个+
来直观地界定值echo
ed。