PDA

Показать полную графическую версию : [решено] Как получить значение "вложенной" переменной.


volk1234
03-10-2009, 00:05
Стыдно, но сам не могу додуматся.
Задача:
Есть несколько серийников. В зависимости от ситуации надо подставлять нужный.
Set PID1=111-111
Set PID2=222-111
Set PID3=333-111

Set /p x="Введите порядковый номер серийника"

msiexec /i some.msi PIDKEY= сюда надо вставить PIDx
, т.е. если пользователь ввел 3 - то надо вставить значение %PID3%

Целый день ломаю голову. Чувствую решение элементарно.

amel27
03-10-2009, 03:57
Set PID1=111-111
Set PID2=222-111
Set PID3=333-111

Set /P X="Введите порядковый номер серийника: "

Call Set PID=%%PID%X%%%
If Defined PID msiexec /i some.msi PIDKEY=%PID%

volk1234
03-10-2009, 13:05
А как работает связка Call Set ?
Я не нашел в справке ....

amel27
03-10-2009, 15:24
volk1234, по сути CALL ничего не делает - просто запускает на выполнение SET, трикс в двойном раскрытии "%" - CALL подставляет %$X% и заменяет "%%" -> "%", далее SET раскрывает саму переменную:

"%%PID%X%%%" -> "%PID1%" -> "111-111"

gora
03-10-2009, 15:51
Как вариант:Setlocal enabledelayedexpansion
Set PID1=111-111
Set PID2=222-111
Set PID3=333-111

Set /P X="Введите порядковый номер серийника: "

If Defined !PID%X%! msiexec /i some.msi PIDKEY=!PID%X%!




© OSzone.net 2001-2012