2016-03-19 4 views
3

Предположим, у меня есть ENV переменные в окнах:Как получить значение env, которое является переменной?

IA=C:\a 
IB=C:\b 

теперь я пишу пакетный скрипт: (названный s.bat)

@echo off 
set var=%1 
echo %var% 

Когда я бегу s.bat IA, результат IA, но я на самом деле хотите, чтобы результат был C:\a. Как я могу достичь этого требования?

+0

Использовать 'set var ="% IA "'? –

+0

Описывается способ достижения этого управления [здесь] (http://stackoverflow.com/questions/35993396/expand-variables-in-variables-with-a-batch-file) или [здесь] (http: // stackoverflow.com/questions/35532216/cmd-piping-echo-to-set-expanding-variables-in-variables/35538235#35538235). Подробное объяснение используемого метода дано [здесь] (http://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-batch-script/10167990 # 10167990). – Aacini

ответ

5

Вы можете использовать задержанное расширение или трюк вызова.

@echo off 
setlocal EnableDelayedExpansion 
set "varname=%1" 
echo %varname% 
echo !%varname%! - This works 
call echo %%varname%% - This too 
Смежные вопросы