2014-12-21 6 views
0

Как я ввожу пользователю переменную? (Я понятия не имею, спрашиваю об этом, потому что я работаю над настройкой ...)Как ввести пользователя, затем переменную?

Например, если пользовательский ввод будет «input», я могу сделать переменную, являющуюся вводом пользователя? Если ввод пользователя является «3» переменная будет 3. Если ввод пользователя (или ответ) будет 4, то переменная будет 4.

Код:

:loop 
set /p input=input something here: 
if %input%==. goto loop 
if not %input%==. goto store_userinput_as_variable 
:store_userinput_as_variable 
cls 
echo Your input has been stored in a variable. 

Но как я сделать переменную, которую вводит пользователь? Пожалуйста помоги!

+0

Не уверен, что вы спрашиваете здесь. Независимо от того, что пользователь вводит для _вперед где-то здесь: _ будет храниться в переменной%% input%. Вы спрашиваете, если они войдут в «MyValue», тогда будет создана новая переменная с именем «% MyValue%»? –

+0

Спасибо Джейсон Фолкнер. ;). Этот вход пользователя фактически% input%. Хотя я игнорирую текст «Вы просите, чтобы они вошли в« MyValue », тогда будет создана новая переменная с именем% MyValue%?». –

+0

Вы хотите установить значение переменной в том, что вводит пользователь, или вы хотите создать переменную с именем, которое вводит пользователь? – SomethingDark

ответ

0

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

@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 ...

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

0

Я не совсем уверен, что вы пытаетесь выполнить, но, возможно, это поможет.

@ECHO OFF 

:loop 
set /p input=input something here: 
if %input%==. goto loop 
if not %input%==. goto store_userinput_as_variable 
:store_userinput_as_variable 
cls 

ECHO You entered: %input% 

REM Create a variable with the same name as the value they entered. 
CALL SET %input%=New Variable 

CALL ECHO The variable "%input%" has a value of "%%%input%%%" 

Так что, если вы введете «Привет», результат будет:

You entered: Hello 
The variable "Hello" has a value of "New Variable" 
Смежные вопросы