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中编辑了这些内容。)注意:我提取了额外的变量,并将其设置为直接与输入一起工作,现在它可以工作了,因为我已经从变量名中删除了破折号。