Batch file 保存并加载.bat游戏--单个数字错误

Batch file 保存并加载.bat游戏--单个数字错误,batch-file,Batch File,在这个问题上,我使用了Mat的答案 但现在,我有一个问题,即使用上述答案“保存”数字 如果变量不是两位数(例如1或0),它会将变量“保存”为“”,从而在您执行任何需要该变量的操作时使游戏崩溃。在此之前,游戏将变量设置为精细 例如,如果我拿起抹布,然后键入Inv,它会说我拿着抹布。如果我再次保存并加载,然后输入Inv,它不会说我保存了任何东西 如果%raghave%=00 (我还在记事本++中打开了保存文件,因此可以看到set raghad=) (同样,如果我将Mat的代码与空格一起使用,那么变量

在这个问题上,我使用了Mat的答案

但现在,我有一个问题,即使用上述答案“保存”数字

如果变量不是两位数(例如1或0),它会将变量“保存”为“”,从而在您执行任何需要该变量的操作时使游戏崩溃。在此之前,游戏将变量设置为精细

例如,如果我拿起抹布,然后键入Inv,它会说我拿着抹布。如果我再次保存并加载,然后输入Inv,它不会说我保存了任何东西

如果
%raghave%=00

(我还在记事本++中打开了保存文件,因此可以看到
set raghad=


(同样,如果我将Mat的代码与空格一起使用,那么变量设置为
“set raghad=1
”,因此在末尾添加一个空格)

问题在于Mat的解决方案! 为了更好地理解,我重复他的解决方案

@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
引号用于确保忽略集合后的“隐藏”空格

顺便说一句,如果%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

问题在于Mat的解决方案! 为了更好地理解,我重复他的解决方案

@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
引号用于确保忽略集合后的“隐藏”空格

顺便说一句,如果%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

我用00只是为了测试Mat的方式是否喜欢00,它确实喜欢。谢谢你的帮助,这成功了!我真的很想知道,。我还将它保存到.ParadoxSave,然后将其重命名为.cmd,当它加载(我非常喜欢的东西)时再次返回,我使用00只是为了测试Mat的方式是否喜欢00,它确实喜欢。谢谢你的帮助,这成功了!我真的很想知道,。我还将其保存到.ParadoxSave,然后将其重命名为.cmd,并在加载时再次返回(这是我非常喜欢的)