我有一个脚本文件,它接受 1 到 5 之间的数字,然后必须将该输入映射到另一个数字以提供给程序。很简单:如果小于或等于 2,则减一。更高,加一个。
这是我脚本的业务部分:
set /p reason=Reason code:
if %reason%==q (
goto eof
)
if %reason% GEQ 1 (
if %reason% LEQ 5 (
if %reason% LEQ 2 (
set /a code=%reason%-1
) else (
set /a code=%reason%+1
)
echo %code%
)
)
我有这个与 goto 循环。第一次迭代,按 1。它说 echo is off。再次按 1,它等于 0,正如预期的那样。按2,它说一个。2 再次,它说 1,正如预期的那样。
我已经确认它始终如一地说明它应该从最后一个循环中获取什么输入(或者如果它是第一个循环则什么都没有)。每次按“q”退出都有效。
在正确的地方回响,我确认它完全符合条件。这也很好地设置了理由。读取数字似乎没有问题,因为所有条件都按预期工作(所以如果我按 5,然后按 6,它会阻止 6,而不是认为我给了它 5)。
我有另一个具有相同算术运算的脚本,并且效果很好。除了变量名称之外,我看不到这些行之间的任何区别(我之前将其设置回原因变量,但为了清楚起见更改为代码)。