Math 如何在批处理中正确执行模数运算?

Math 如何在批处理中正确执行模数运算?,math,windows-7,batch-file,Math,Windows 7,Batch File,我正在尝试编写一个批处理文件,该文件根据对集合变量执行的模运算的结果执行操作。然而,我似乎不能完全正确地理解它 首先,为了测试我的数学运算语法,我一直在尝试获得一个更简单的脚本来生成所需的结果 :START SETLOCAL SET /P Input-Num="Input Number: " SET /A Input-Num=%Input-Num% %% 2 ECHO %Input-Num% ENDLOCAL PAUSE :END 如果输入5,则预期输出为1。但是,我收到一条消息说缺少运算符

我正在尝试编写一个批处理文件,该文件根据对集合变量执行的模运算的结果执行操作。然而,我似乎不能完全正确地理解它

首先,为了测试我的数学运算语法,我一直在尝试获得一个更简单的脚本来生成所需的结果

:START
SETLOCAL
SET /P Input-Num="Input Number: "
SET /A Input-Num=%Input-Num% %% 2
ECHO %Input-Num%
ENDLOCAL
PAUSE 
:END
如果输入
5
,则预期输出为
1
。但是,我收到一条消息说
缺少运算符。
,然后它输出
5


我做错了什么?

使用
SET/p
是您的问题,因为5不再被视为数值。您上面的示例按预期工作

这是DOS还是其他什么?当我运行精确的样本时(顶部添加了
@ECHO OFF
),我得到了
1
,没有
缺少运算符
),当从批处理文件中执行时,您的代码工作正常。如果直接在CMD中键入,则不要转义
%
。使用
%%
而不是
%%
@littleobbytables首先,我喜欢你的屏幕名。它在Windows7的CMD中。我已经更新了标记。@vcsjones我会再试一次,但我一直在以批处理文件的形式运行它。也许唯一的显著区别是我一直在使用
SET/P
作为第一个变量设置。更新了问题以反映
SET/P
。是否有方法使用
SET/P
(或类似的操作)并对变量执行数学运算?请参阅此链接:。他们使用
SET/P
,然后对代码后面的第二个变量执行
SET/A
。现在尝试一下。还是不行。现在我得到两个
缺少操作符的错误。已经有了。我现在明白了。显然,在变量名中使用破折号(是的,我使用的是不同的变量名)与对这些变量执行数学运算并不协调。(也在now中编辑了这些内容。)注意:我提取了额外的变量,并将其设置为直接与输入一起工作,现在它可以工作了,因为我已经从变量名中删除了破折号。