Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как получить значение "вложенной" переменной. (http://forum.oszone.net/showthread.php?t=152145)

volk1234 03-10-2009 00:05 1233159

Как получить значение "вложенной" переменной.
 
Стыдно, но сам не могу додуматся.
Задача:
Есть несколько серийников. В зависимости от ситуации надо подставлять нужный.
Код:

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 1233230

Код:

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 1233404

А как работает связка Call Set ?
Я не нашел в справке ....

amel27 03-10-2009 15:24 1233542

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

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

gora 03-10-2009 15:51 1233569

Как вариант:
Код:

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%!



Время: 20:10.

Время: 20:10.
© OSzone.net 2001-