首页 > 解决方案 > SET /a var1 = var1 + 1 /a 不是内部或外部命令

问题描述

所以这是我的代码

IF %FIT% leq %FITLAST% set /a "MUTA=MUTA-1" ELSE set /A "MUTA=MUTA+1"

这是针对人工智能的,它会查看这一代是否比上一代更合适,并调整重复相同特征或放大它们的可能性。不要担心 AI 方面的声音我在 java 中做了这个我只是将它移到批处理中以应对挑战并且遇到各种语法错误 xD

本质上,如果这一代不太适合或同样适合上一代,则将 MUTA 减 1(减少重复相同动作的可能罩。如果这一代比上一代更适合,则将 MUTA 增加 1,这将增加可能的罩重复同样的动作。

问题在于它将 /a 视为自己的命令并且显然无法识别它,因为它只是 SET 语法的一部分。

编辑:这是回答^^^^

好的,我希望您也可以帮助我解决扩展代码中引起的问题:

IF "%FIT%" leq "%FITLAST%" (
set /a "MUTA=MUTA-1"
) ELSE (
set /A "MUTA=MUTA+1"
)

if %num%>50(
    SET DIR=DOWN
    if %num%>(50+%MUTA%) SET DIR=UP
)
pause
if %num%<50(
    SET DIR=RIGHT
    if %num%<(%MUTA%) SET DIR=LEFT
)

这不会返回任何内容,它只会关闭控制台,即使其中有 pause 命令。我在这里寻找一个答案,以纠正我错过的某些东西的不可避免的错误语法,而不是重新组织它来解决问题,因为这绝对只是我的语法错误。

标签: batch-filevariableslogicartificial-intelligence

解决方案


你用错了。你应该使用括号:

IF %FIT% leq %FITLAST% (
set /a "MUTA=MUTA-1"
) ELSE (
set /A "MUTA=MUTA+1"
)

要更好地理解该if语句,请从 cmdline 运行if /?

在编辑上。您不能使用>or<更大/更小,因为您需要使用gtr,等lssequ并且在您的数字和括号之间有空格。

if %num% lss 50 (

或者

if %num% gtr 50 (

请阅读if /?帮助,它显示:

其中 compare-op 可能是以下之一:

EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal

推荐阅读