0

我需要使用一个字符串格式的变量内容作为其他变量的名称并调用该变量内容。

就像是:

set upd1= c:\test1
set testval=upd1

set upd=%testval%

echo %upd%

结果是 upd1,我想得到结果以显示 c:\test1

4

4 回答 4

2

你应该改变

set testval=upd1

作为set testval=%upd1%

于 2013-09-02T13:50:29.797 回答
1
@echo off
setlocal enabledelayedexpansion

set name=foo
set foo=bar
echo !%name%!

呼应“酒吧”。

于 2013-09-03T08:51:01.073 回答
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
于 2013-09-02T14:10:26.107 回答
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

根据您的情况,这里有两种方法。注意我已将名称更改updupd2以便使用最终set命令进行比较。另外,您的原始值upd1包含一个空格;因此我添加了一个+在视觉上界定值echoed。

于 2013-09-03T09:26:06.657 回答