2015-12-05 2 views
3

У меня есть переменная, содержащая имя переменной окружения. Я хотел бы оценить эту ценность. Например:Пакет: имя динамической переменной (эквивалент эквивалента)

:: TOTO_1_2 defined outside of batch file 
set varName="TOTO_1_2" 
echo %TOTO_1_2% :: Display env var 
echo %%varName%% :: Broken 

Идея состоит в том, чтобы передать значение env var, на которое указывает varName, команде.

Спасибо

+0

http://stackoverflow.com/questions/33899436/double-delayed-expansion-in-batch – Aacini

ответ

6

, если вы хотите, чтобы оценить оцененную переменную, вы должны разобрать его дважды:

Существуют различные возможности сделать это. Вот три из них:

@echo off 
SET TOTO_1_2=hello 
set "varName=TOTO_1_2" 
echo 0: %TOTO_1_2% 
call echo 1: %%%varName%%% 

setlocal enabledelayedexpansion 
for %%i in (%varname%) do echo 2: !%%i! 
echo 3: !%varName%! 
+0

Спасибо, отлично работает :) – r2d2leboss

+0

Спасибо, очень Userful. Невероятно, что самые простые вещи, такие как разыменование дважды, могут быть настолько нетривиальными в пакетном файле. – 99Sono

Смежные вопросы