пробелы в пакетных строках - PullRequest
0 голосов
/ 07 мая 2019

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

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

if %enchantment% == 1 set enchantment="Health Absorbing"

Но затем, когда я отображаю% enchantment%, он отображается с "Поглощением здоровья", а не с поглощением здоровья.

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

if %enchantment% == 30 set "enchantment=Health Absorbing"

Вот небольшая версия моего кода:

@echo off

:Weapon
set /a weapon=%random% * 3 / 32768 + 1
if %weapon% == 1 set weapon=Battleaxe
if %weapon% == 2 set weapon=Sword
if %weapon% == 3 set weapon=Mace

:Enchant
set /a enchantmenttype=%random% * 2 / 32768 + 1
if %enchantmenttype% ==1 goto Enchant1
if %enchantmenttype% ==2 goto Enchant2

:Enchant1
set /a enchantment=%random% * 3 / 32768 + 1
if %enchantment% == 1 set enchantment=Flaming
if %enchantment% == 2 set enchantment=Holy
if %enchantment% == 3 set enchantment=Frozen
set "EW=%enchantment% %weapon%"
goto EW

:Enchant2
set /a enchantment=%random% * 3 / 32768 + 1
if %enchantment% == 1 set "enchantment=the Fire Spirit"
if %enchantment% == 2 set "enchantment=the Frozen Spirit"
if %enchantment% == 3 set "enchantment=the Phantom Spirit"
set "EW=%weapon% of %enchantment%"
goto EW

:EW
echo %EW%
pause >nul
goto Weapon

Я хочу, чтобы код мог отображать случайные чары со случайным оружием при каждом нажатии кнопки. Однако код делает это только 1-10 раз, прежде чем он неожиданно завершает работу.

1 Ответ

0 голосов
/ 07 мая 2019

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

@echo off

:Weapon
set /a weapon=%random% %% 3 + 1
if "%weapon%"=="1" set weapon=Battleaxe
if "%weapon%"=="2" set weapon=Sword
if "%weapon%"=="3" set weapon=Mace

:Enchant
set /a enchantmenttype=%random% %% 2 + 1
if "%enchantmenttype%"=="1" goto Enchant1
if "%enchantmenttype%"=="2" goto Enchant2

:Enchant1
set /a enchantment=%random% %% 3 + 1
if "%enchantment%"=="1" set enchantment=Flaming
if "%enchantment%"=="2" set enchantment=Holy
if "%enchantment%"=="3" set enchantment=Frozen
set "EW=%enchantment% %weapon%"
goto EW

:Enchant2
set /a enchantment=%random% %% 3 + 1
if "%enchantment%"=="1" set "enchantment=the Fire Spirit"
if "%enchantment%"=="2" set "enchantment=the Frozen Spirit"
if "%enchantment%"=="3" set "enchantment=the Phantom Spirit"
set "EW=%weapon% of %enchantment%"
goto EW

:EW
echo %EW%
pause >nul
goto Weapon
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...