Пакетные переменные не дают promt для установки

#loops #batch-file #variables

#циклы #пакетный файл #переменные

Вопрос:

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

Вот сценарий cmd:

 @echo off
cls
: bruh
echo welcome to the shop, what would you like?
pause
set p/ grapes=
cls
echo oh so you want %grapes%?
pause
echo you have bought %grapes%
pause
cls 
goto bruh
 

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

Кто-нибудь знает, как это исправить?

Комментарии:

1. Начнем с того, что опция command /P не p/ является . Пожалуйста, откройте окно командной строки, введите set /? , нажмите [ENTER] клавишу и прочитайте информацию об использовании. Я бы также посоветовал, прежде чем вы увязнете в использовании этой опции, использовать inventory / itemlist , чтобы убедиться, что можно выбрать только элементы в этом инвентаре. Чтобы позволить конечному пользователю вводить что-либо (или ничего) в set /p командной строке, требуется правильный код проверки для предотвращения случайного или преднамеренного ввода.

2. it just says press any key to continue. : Да. это то, что pause должно быть сделано. Кстати: set /p может отображать подсказку: set /p "grapes=What would you like? "

Ответ №1:

ваша команда set была неверной. это set /p не set p/ так. вот рабочий код

 @echo off
cls
: bruh
set input=
set /p input=echo welcome to the shop, what would you like?
cls
echo oh so you want %input%?
pause
echo you have bought %input%
pause
cls 
goto bruh
 

Благодаря @Compo он напомнил мне очистить содержимое%ввода%

Комментарии:

1. Justaus3r , вы должны очистить содержимое %input% предпочтительно в строке над вашей set /p командой, поскольку она зацикливается, и при следующем перемещении все равно будет иметь содержимое последних циклов (я уже объяснял это вам в одном из ваших других ответов только за последние полчаса или около того)_ . BlazedRasta, пожалуйста, обратите внимание на мой комментарий под основным вопросом, ваш и этот код не мешает мне ничего не вводить, вредоносный код или просто намеренно неправильный ввод.

2. @Compo я не знаю, может быть, он просто намеренно назвал переменную как виноград. он не упомянул, что ему нужно условие в его скрипте для сравнения его ввода. Кстати, BlazedRasta Compo прав, этот код не помешает вам ввести неправильный ввод, если вы хотите, чтобы ввод был только виноградом………..

3. Смысл, который я вам объяснял, заключался в том, что если конечный пользователь вводит grapes в качестве своего элемента в первый раз, а в следующий раз случайно нажимает enter, перед вводом milk код будет запускаться grapes снова, что, я уверен, было бы нежелательно или могло, в зависимости от остальной части кода, вызвать проблемы в другом месте.

4. @Compo о, да, вот почему я очистил ввод, когда вы указали на это. теперь код обновляется