Проблема в решении Мата!
Для лучшего понимания я повторяю его решение
@echo @ECHO OFF > savegame.cmd
@echo SET ITEMS=%ITEMS% >> savegame.cmd
@echo SET HEALTH=%HEALTH% >> savegame.cmd
@echo SET MONEY=%MONEY% >> savegame.cmd
На мой взгляд, у него есть несколько недостатков.
Префикс @
не обязателен.
Перенаправление повторяется для каждой строки (мне не нравится избыточность).
Нужны пробелы, так как без пробелов у вас проблемы с числами.
Образец с элементами = 1
@echo set ITEMS=1>>savegame.cmd
Это приводит не к записи set items=1
, а к записи set items=
в 1>>savegame.cmd
1 >> - стандартный поток.
Все проблемы можно решить с помощью
(
echo @ECHO OFF
echo SET "ITEMS=%ITEMS%"
echo SET "HEALTH=%HEALTH%"
echo SET "MONEY=%MONEY%"
) > savegame.cmd
Кавычки используются для гарантии того, что «скрытые» пробелы после набора игнорируются.
Btw. Плохо использовать такую конструкцию, как if %raghave% = 00
(вам нужно два знака равенства), поскольку 00
не является нормальным числом, которое вы не можете сосчитать или рассчитать с ним, лучше вместо этого использовать 0
.
Тогда также это должно работать
set /a items=0
set /a items=items+1
set /a items=items-1
if %items%==0 echo There are no items