SET / a var1 = var1 + 1 / a未被识别为内部或外部命令

时间:2018-05-31 12:52:30

标签: batch-file variables logic artificial-intelligence

所以这是我的代码

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

这适用于AI,它会看到这一代是否比最后一代更健康,并调整重复相同特征或放大它们的可能性。不要担心我在java中做到这一点的AI方面我只是将它移到批处理挑战并且遇到各种语法错误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命令,它也不会返回任何关闭控制台的东西。我在这里寻找一个答案,纠正我在错过的东西上不可避免的错误语法,而不是重新组织它来解决问题,因为这肯定只是我的语法错误。

1 个答案:

答案 0 :(得分:0)

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

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

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

运行

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

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