#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 о, да, вот почему я очистил ввод, когда вы указали на это. теперь код обновляется