Пакетное программирование = "set / p" не принимает пробелы в качестве ответа - PullRequest
0 голосов
/ 26 января 2019

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

Чтоя говорю о том, что здесь:

пакет "set / p" падает, когда нет ввода

Но я не понимаю, как исправить мой код из ответов там.

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

PS извините, если я что-то написал с ошибкой, английский не мой родной язык.

Пример кода:

@echo off
:start
cls
set input=x

set /p input=Enter input:

if %input%==1 goto 1answered
if %input%==2 goto 2answered

echo A mistake was made
pause >NUL
goto start

:1answered
echo You entered the number 1
pause >NUL
exit

:2answered
echo You entered the number 2
pause >NUL
exit

Кроме того, вот код, над которым я работаю.Я знаю, это плохо, но я не знаю лучше: /

@echo off

(
set /p usernameofplayer=
)<usernameofplayer.txt

set input=x

mode 85,30

color 0b

title LiteTec.inc

goto mainpage

::The code on top of mainpage is just for looks, random.

:mainpage
cls
echo.
echo var dog = ( -0.19 ) ^+ Jon / ( 0.15 ) ^* -foo(y,x,rule(destroy() ^* ROWS,920.47))
echo            /^* terminals used ^*/
echo       var num, id_var, id_func, id_idx, binaryOP, quote, assignOP;
echo this.getRandomRule = function () {
echo                if (this.rules.length == 0) {
echo                     return ""
echo       WELCOME TO
echo       _      ____  ______    ___ ______    ___    __ 
echo      ^| ^|    ^|    ^|^|      ^|  /  _]      ^|  /  _]  /  ]
echo      ^| ^|     ^|  ^| ^|      ^| /  [_^|      ^| /  [_  /  / 
echo      ^| ^|___  ^|  ^| ^|_^|  ^|_^|^|    _]_^|  ^|_^|^|    _]/  /  
echo      ^|     ^| ^|  ^|   ^|  ^|  ^|   [_  ^|  ^|  ^|   [_/   \_ 
echo      ^|     ^| ^|  ^|   ^|  ^|  ^|     ^| ^|  ^|  ^|     ^\     ^|
echo      ^|_____^|^|____^|  ^|__^|  ^|_____^| ^|__^|  ^|_____^|^\____^|
echo.
echo         For help type "help" and click enter
echo.
goto command




:command
set /p input=#%usernameofplayer%^>

if %input%==reset goto mainpage
if %input%==help goto help
if %input%==chat goto chat
if %input%==access goto accessnotspecified
if %input%==x goto command
if %input%==ELSE goto command



:help
echo.
echo ================================================================
echo To use a command, type in its name and click enter
echo To learn sub commands of a command, type the command
echo with [] at the end
echo example: command[]
echo To use a sub command of a command, type the sub command
echo in the [] of the command
echo List of commands available:
echo =reset
echo =chat
echo =access
echo =
echo ================================================================
goto command




:accessnotspecified
echo.
echo What to access is not specified
echo.
goto command

1 Ответ

0 голосов
/ 26 января 2019

Я бы предложил изменить секцию команд на эту:

:command
Set "input="
Set /P "input=#%usernameofplayer%>"

If /I "%input%"=="reset" GoTo mainpage
If /I "%input%"=="help" GoTo help
If /I "%input%"=="chat" GoTo chat
If /I "%input%"=="access" GoTo accessnotspecified
GoTo command

… как вы можете видеть, при двойных кавычках во входной строке не нужно экранировать >.


В качестве примечания вы можете также изменить некоторые разделы главной страницы на:

Echo var dog = ( -0.19 ) + Jon / ( 0.15 ) * -foo(y,x,rule(destroy() * ROWS,920.47))
Echo            /* terminals used */

… потому что нет необходимости бежать + или* +1016 **.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...