Без дополнительной информации я думаю, что ваша проблема не в goto
командах, а в if
условных выражениях
Предположим, пользователь вводит pikachu
в первом приглашении. Когда будет достигнут первый if
, парсер пакета заменит операцию чтения переменной %risp%
значением внутри переменной. Итак, ваша линия
if [%risp%]=="pikachu" goto UNO
выполняется как
if [pikachu]=="pikachu" goto UNO
Вы можете видеть, что [pikachu]
не равно "pikachu"
, поэтому goto
не выполняется.
Некоторые ваши условия записываются как
if [%risp%]==[leggero]
В этих случаях условие будет работать, так как строка будет проанализирована в
if [leggero]==[leggero]
, но если значение, полученное от пользователя, содержит пробелы, команда не выполнится. Это также необходимо изменить.
Попробуйте с
if "%risp%"=="pikachu" goto UNO
То есть значения в кавычках по обе стороны от условия (так что обе стороны могут быть равны) с кавычками, защищающими наличие пробелов.
Это (или подобное) изменение должно быть сделано во всех ваших if
командах.
Другая проблема с вашими goto
- это то, как вы называете метки, куда прыгать. Вы не можете включать пробелы в название метки. battaglia 1
и battaglia 2
обозначаются как battaglia
, а команда goto
переходит к ближайшей (от goto
строке до конца файла, затем от начала файла) метки.