Ниже приведен пример создания переменной окружения с именем, введенным пользователем командного файла.
@echo off
setlocal EnableDelayedExpansion
:Loop
rem Define environment variable "input" with a double quote as default value.
rem This is necessary to avoid an execution break after user input because of
rem not defined "input" variable in case of user just hits RETURN or ENTER on
rem prompt without entering anything.
set "input=""
set /p "input=Input something here: "
rem Remove all double quotes, left and right angle brackets entered by the user.
set "input=%input:"=%"
set "input=%input:<=%"
set "input=%input:>=%"
rem Has the use entered anything at all?
if "%input%"=="" goto Loop
set "%input%=This variable name was entered by the user."
echo Your input has been stored in a variable.
set "%input%"
endlocal
Но я не рекомендую это делать. Это очень опасно, так как пользователь может вводить символы со специальным значением, приводящим к пакетному выходу из-за синтаксической ошибки или, что еще хуже, манипуляции пакетным исполнением.
Например, если пакетный пользователь вводит строку, начинающуюся с знака равенства, этот код как есть приведет к синтаксической ошибке при дальнейшей обработке. Критическое также строка, введенная пользователем, который является имя важной предопределенной переменной окружения как PATHEXT, ПУТЬ, APPDATA, USERNAME ...
я настоятельно рекомендую не делать то, что вы в настоящее время хотят сделать. Нам было бы интересно, почему вы хотите создать переменную среды с именем, введенным пользователем пакетного файла.
Не уверен, что вы спрашиваете здесь. Независимо от того, что пользователь вводит для _вперед где-то здесь: _ будет храниться в переменной%% input%. Вы спрашиваете, если они войдут в «MyValue», тогда будет создана новая переменная с именем «% MyValue%»? –
Спасибо Джейсон Фолкнер. ;). Этот вход пользователя фактически% input%. Хотя я игнорирую текст «Вы просите, чтобы они вошли в« MyValue », тогда будет создана новая переменная с именем% MyValue%?». –
Вы хотите установить значение переменной в том, что вводит пользователь, или вы хотите создать переменную с именем, которое вводит пользователь? – SomethingDark