【问题标题】:How do I properly perform modulus operations in Batch?如何在批处理中正确执行模数运算?
【发布时间】:2012-07-16 17:46:48
【问题描述】:

我正在尝试编写一个批处理文件,该文件根据对一组变量执行的模运算的结果执行操作。但是,我似乎无法完全正确。

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

:START
SETLOCAL
SET /P Input-Num="Input Number: "
SET /A Input-Num=%Input-Num% %% 2
ECHO %Input-Num%
ENDLOCAL
PAUSE 
:END

如果我输入5,预期的输出是1。但是,我收到一条消息说Missing operator.,然后它输出5

我在这里做错了什么?

【问题讨论】:

  • 这是 DOS 还是别的什么?当我运行那个确切的样本时,我得到1 而没有Missing operator(在顶部添加了@ECHO OFF
  • 您的代码从批处理文件中运行良好。如果您直接在 CMD 中输入,请不要转义 %。使用% 而不是%%
  • @LittleBobbyTables 首先,我喜欢你的网名。它在 Windows 7 上的 CMD 中。我已经更新了标签。
  • @vcsjones 我会再试一次,但我一直将它作为批处理文件运行。也许唯一显着的区别是我一直使用SET /P 进行第一个变量设置。
  • 更新问题以反映SET /P

标签: math windows-7 batch-file


【解决方案1】:

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

【讨论】:

  • 有没有办法使用SET /P(或类似操作的东西)对变量执行数学运算?
  • 查看此链接:stackoverflow.com/a/684389/334849。他们使用SET /P,然后在代码后面的第二个变量中使用SET /A
  • 现在试过了。还是不行。现在我得到 两个 Missing operator 错误。
  • 已经做到了。我现在想通了。显然,在变量名中使用破折号(是的,我使用了不同的变量名)并不能很好地与对这些变量执行数学运算。 (现在也编辑了。)
  • 注意:我提取了额外的变量并将其设置为直接使用输入,现在我已经从变量名称中删除了破折号。
猜你喜欢
  • 2016-12-07
  • 2015-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-02
  • 2018-04-21
相关资源
最近更新 更多