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