Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file “此时不应出现5个”_Batch File - Fatal编程技术网

Batch file “此时不应出现5个”

Batch file “此时不应出现5个”,batch-file,Batch File,所以,我和一个朋友正在制作一个批量RPG,我们有一个基于随机数b/w 1和10的战斗系统。代码片段是: SET /A RANval=%RANDOM% * 10 / 32768 + 1 echo %RANval% pause if %RANval% GTR 5 goto O_Battle if %RANval% LSS 5 goto O_NoBattle if %RANval% == 5 goto O_RareBattle 但问题是:它一直与5崩溃,这在当时是出人意料的 有人能帮我吗 编辑:当我

所以,我和一个朋友正在制作一个批量RPG,我们有一个基于随机数b/w 1和10的战斗系统。代码片段是:

SET /A RANval=%RANDOM% * 10 / 32768 + 1
echo %RANval%
pause
if %RANval% GTR 5 goto O_Battle
if %RANval% LSS 5 goto O_NoBattle
if %RANval% == 5 goto O_RareBattle
但问题是:它一直与5崩溃,这在当时是出人意料的 有人能帮我吗

编辑:当我更改LSS 5和全球技术法规5下的5时,问题似乎发生了变化。i、 e.如果我做了LSS 3和GTR 3,它会说3在这个时候是出乎意料的
抱歉,这是我第一次使用stackoverflow

如果我将以下内容放入批处理文件中,它对我有效,那么您的转到标签可能有问题

SET /A RANval=%RANDOM% * 10 / 32768 + 1
echo %RANval%

if %RANval% GTR 5 goto O_Battle
if %RANval% LSS 5 goto O_NoBattle
if %RANval% == 5 goto O_RareBattle


:O_Battle
echo "Battle"
goto end
:O_NoBattle
echo "No Battle"
goto end
:O_RareBattle
echo "Rare"
goto end

:end
此时出现的错误消息5是意外的,这正是您在Windows XP和7下看到的,至少如果您键入:

if GTR 5 echo blah
这让我相信if语句中的变量名是不正确的,因为:

if %no_such_var% GTR 5 echo blah
将导致变量被替换为空,并且发生错误

所以,检查一下你没有做过一些愚蠢的事情,比如在你的if语句中使用1wun而不是l ell。如果需要,使用一个很难出错的简单变量,如r:-


有趣的是,这似乎只发生在批处理文件中,而不是从命令行。这两种方法可能有不同的规则,但如果您正在测试,请确保在批处理文件中进行测试。

这是Lufiagy2000,它不允许我在学校计算机上使用G+登录>: 我修复了它,我只需要删除代码周围的括号。我想我必须解决不使用括号的问题。除非有人想出解决办法。谢谢你们的回答

因为它在内部,所以需要使用延迟扩展

使用延迟扩展使用!而不是变量的%

试试这个:

@echo off
setlocal enabledelayedexpansion

IF "A"=="A" (
  SET /A RANval=%RANDOM% * 10 / 32768 + 1
  echo !RANval!
  pause
  if !RANval! GTR 5 goto O_Battle
  if !RANval! LSS 5 goto O_NoBattle
  if !RANval! == 5 goto O_RareBattle
)

尝试使用延迟扩展。在批处理文件的开头,放入:

setlocal enableDelayedExpansion
此外,将您的变量用!而不是像这样:

if !RANval! GTR 5 goto O_Battle
if !RANval! LSS 5 goto O_NoBattle
if !RANval! == 5 goto O_RareBattle

<>这应该解决这个问题。

可能想考虑使用一个合适的编程环境。这会让生活更轻松。哪个版本赢?这在Win7上运行得很好。几年后,他会说,伙计,没什么,我在批处理文件@user2864740中写了一个RPG。这段代码在for循环中吗?不,但在lf loc==这一行中,你知道它在哪一行失败了吗?如果我更改LSS语句和GTR语句,此时更改为出乎意料,替换为任何数字正在等待…请稍候,让我再试一次。。。我将用我的结果编辑此评论编辑:不,对我来说仍然不起作用。好的,我会在早上检查,稍后我会更新。我要睡觉了,请给未来的用户显示你答案的代码。也不建议有两个登录,尤其是当一个配置文件正在回答另一个配置文件提出的问题时。很高兴最后成功了。