CMD/BAT - [решено] Переменная в переменной)

Аватара пользователя
alexx_core

CMD/BAT - [решено] Переменная в переменной)

Сообщение alexx_core »

Здравствуйте!)



Столкнулся с проблемой такого плана. Нужно составить имя переменной из нескольких переменных.



Имеем переменные (имя пользователя) хранящие данные (пароль)





Код:

Код: Выделить всё

set prefix-aa-comp-name1=123
set prefix-aa-comp-name2=321
set prefix-aa-comp-name3=213

От имени компьютера требуется отделить префикс, имя компьютера и составить имя пользователя





Код:

Код: Выделить всё

rem Отделяю префикс
set xx=%computername:˜0,3%
rem Отделяю имя компа
set yy=%computername:˜8,-2%
rem Составляю переменную передаю ее значение в переменную %pass%
call set pass=%aa-%xx%-%yy%%

Все шикарно когда call set pass=%%aa-%xx%-%yy%% выполняю в консоли, в переменную %pass% попадает содержимое переменной prefix-aa-comp-name1, но когда выполняю bat фаил в переменную попадает имя переменной. Поскажите, куда копать.)))
Аватара пользователя
alpap

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение alpap »

Цитата alexx_core:



set prefix-aa-comp-name1=123
CMD/BAT - [решено] Переменная в переменной)




это что, собрано самостоятельно? Значения откуда взяты? Это уже задано или пример? Если пример, то подробно расшифруйте где что.




Цитата alexx_core:



и составить имя пользователя
CMD/BAT - [решено] Переменная в переменной)





Цитата alexx_core:



set pass=%aa-%xx%-%yy%%
CMD/BAT - [решено] Переменная в переменной)




в данном случае вижу что из всего вышеперечисленного вы создаете значение для переменной определяющей пароль, поясните ваши деяния

кроме всего прочего, если это действительно пароль, то у каждого свой - правильно, значит

set pass1=***

set pass2=****

так? Но это можно сделать эффективнее,

так примерно:



Код:

Код: Выделить всё

@echo off
for /f "tokens=1-4 delims=\-" %%a in ('net view^|find "\"') do set %%d=%%a-%%b-%%c-%%d
echo %name1%
echo %name2%
echo %name3%
pause

(А еще, ничего что пароль будет доступен всем кому не лень заглянуть в bat?)

пока копать действительно нечего - пропасть пробелов.

P.S.

И еще я не понял зачем дерибанить все по "-", если потом все опять соединяется, короче ничего непонятно пока ...
Аватара пользователя
x0r

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение x0r »

Цитата alpap:



Цитата alexx_core:



Код:

Код: Выделить всё

set prefix-aa-comp-name1=123 »

это что, собрано самостоятельно? Значения откуда взяты? Это уже задано или пример? Если пример, то подробно расшифруйте где что.

Цитата alexx_core:

и составить имя пользователя »

Цитата alexx_core:



Код:

Код: Выделить всё

set pass=%aa-%xx%-%yy%% »

в данном случае вижу что из всего вышеперечисленного вы создаете значение для переменной определяющей пароль, поясните ваши деяния

кроме всего прочего, если это действительно пароль, то у каждого свой - правильно, значит



Код:

Код: Выделить всё

set pass1=***
set pass2=****

так? Но это можно сделать эффективнее,

так примерно:



Код:

Код: Выделить всё

Код: 
@echo off
for /f "tokens=1-4 delims=\-" %%a in ('net view^|find "\"') do set %%d=%%a-%%b-%%c-%%d
echo %name1%
echo %name2%
echo %name3%
pause

(А еще, ничего что пароль будет доступен всем кому не лень заглянуть в bat?)

пока копать действительно нечего - пропасть пробелов.

P.S.

И еще я не понял зачем дерибанить все по "-", если потом все опять соединяется, короче ничего непонятно пока ...
CMD/BAT - [решено] Переменная в переменной)




Спасибо вам за ваш ответ, но вы не поняли вопрос, либо я непонятно выразился. Попробую еще раз.



Есть имена компов созданные по определенной маске prefix-appname-clustername (не я это придумал).

Есть имена пользователей тоже с определенной маской aa-appname-prefix



Теперь относительно имени компа нужно составить имя пользователя и передать пароль и имя пользователя службе.

Зачем мне это, за тем, что настроить нужно кучу компов.))



У меня возникла загвоздка в извлечении значения переменной, которая содержится в другой переменной, именно при выполнении bat фала, когда выполняю последовательно в консоли, все работает.





Код:

Код: Выделить всё

Имеем список имен пользователей и паролей
set aa-appname-prefix=123
:: Отделяю префикс
set prefix=%computername:˜0,3%
:: Отделяю appname
set appname=%computername:˜8,-2%
:: Составляю имя пользователя
set usrname=aa-%appname%-prefix
:: Теперь мне нужно, чтоб переменная %username%  передала переменной %pass% пароль
call set pass=%%usrname%%

При последовательном выполнении команд в консоли все прекрасно работает, но при выполнении bat файла

call set pass=%%usrname%% выдает имя пользователя...



И дело здесь не в что, зачем и почему, а именно в том, как вытащить значение переменной, содержащейся в другой переменной.
Аватара пользователя
alexx_core

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение alexx_core »

по-мойму, тебе нужен for /?



Код:

Код: Выделить всё

@echo off
set computername=pref-middle-end
for /f "delims=- tokens=1,2,3" %%A  in ("%computername%") do set new=blah_%%C_%%A_%%B
echo %new%
pause
exit
Аватара пользователя
x0r

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение x0r »

по-мойму, тебе нужен for /?



Код:

Код: Выделить всё

@echo off
set computername=pref-middle-end
for /f "delims=- tokens=1,2,3" %%A  in ("%computername%") do set new=blah_%%C_%%A_%%B
echo %new%
pause
exit
Аватара пользователя
x0r

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение x0r »

Цитата Iska:



alexx_core, Вы о чём-то о своём, о женском, рассуждаете. Я тоже ничего не смог понять в Ваших экзерсисах. Но на кой шут Вы пытаетесь что-то присваивать предопределённой переменной окружения, такой, как username, а? Вот, зачем?! Не делайте так, используйте другое имя переменной окружения.
CMD/BAT - [решено] Переменная в переменной)




Это просто для примера. У меня переменные другие. Проблема в другом.










Цитата x0r:



по-мойму, тебе нужен for /?



Код:

Код: Выделить всё

@echo off
set computername=pref-middle-end
for /f "delims=- tokens=1,2,3" %%A in ("%computername%") do set new=blah_%%C_%%A_%%B
echo %new%
pause
exit

CMD/BAT - [решено] Переменная в переменной)




Ваша конструкция составляет имя пользователя, у меня оно и так прекрасно составляется. Мне нужно из переменной в которая хранится имени другой переменной вытащить значение.



т.е. если упростить, то





Код:

Код: Выделить всё

set aa-appname-prefix=123
set usrname=aa-appname-prefix
call set pass=%%usrname%%
echo %pass% 
123

Данная конструкция работает если вводить в консоли по командно, но не работает если выполнить bat.





PS: Походу я непонятно объясняю...
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение Iska »

ЯННП , так чтоле



Код:

Код: Выделить всё

@echo on
setlocal EnableDelayedExpansion
set aa-appname-prefix=123
set usrname=aa-appname-prefix
call set pass=!%usrname%!
echo !pass!
pause
exit

походу, вот тут были такие ж муки рождения Изображение
CMD/BAT - двойное раскрытие
Аватара пользователя
x0r

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение x0r »

Код:

Код: Выделить всё

set aa-appname-prefix=123
set usrname=aa-appname-prefix
call set pass=%%%usrname%%%
echo %pass%

или:



Код:

Код: Выделить всё

set aa-appname-prefix=123
set usrname=aa-appname-prefix
set pass=%usrname%
call echo %%%pass%%%
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение Iska »

Цитата x0r:



ЯННП , так чтоле





Код:

Код: Выделить всё

@echo on
setlocal EnableDelayedExpansion
set aa-appname-prefix=123
set usrname=aa-appname-prefix
call set pass=!%usrname%!
echo !pass!
pause
exit

CMD/BAT - [решено] Переменная в переменной)






Оно!!! Спасибо вам!!!
Аватара пользователя
alexx_core

Re: CMD/BAT - [решено] Переменная в переменной)

Сообщение alexx_core »

Цитата alexx_core:



Оно!!!
CMD/BAT - [решено] Переменная в переменной)




Токмо call там уже совершенно излишне.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»