batch-file - for 循环批处理文件中的算术运算

标签 batch-file cmd

我在批处理文件中有一个 for 循环,如下所示:

for %%y in (100 200 300 400 500) do (
    set /a x = y/25     
    echo %x%
)

线路:
set /a x = y/25

似乎没有做任何划分。将每个 y 除以 25 的正确语法是什么?我只需要这个除法的整数结果。

最佳答案

无需扩展环境变量即可在 SET/A 语句中使用。但是 FOR 变量必须扩展。

此外,即使您的计算有效,ECHO 也会失败,因为在解析语句时会发生百分比扩展,并且会立即解析整个 FOR 构造。因此 %x% 的值将是执行循环之前存在的值。要获取在循环中设置的值,您应该使用延迟扩展。

此外,您应该删除赋值运算符之前的空格。您正在声明名称中带有空格的变量。

@echo off
setlocal enableDelayedExpansion
for %%A in (100 200 300 400 500) do (
  set n=%%A

  REM a FOR variable must be expanded
  set /a x=%%A/25

  REM an environment variable need not be expanded
  set /a y=n/25

  REM variables that were set within a block must be expanded using delayed expansion
  echo x=!x!, y=!y!

  REM another technique is to use CALL with doubled percents, but it is slower and less reliable
  call echo x=%%x%%, y=%%y%%
)

关于batch-file - for 循环批处理文件中的算术运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12118810/

相关文章:

windows - %variable% 和 !variable! 之间的区别在批处理文件中

java - Windows计算机上存在多个JDK时的Java版本

java - AutoIT exe 手动工作,但在使用 JAVA 调用时,它只是启动 cmd,之后没有任何反应

windows - CMD/Powershell : Copy files with partial path wildcards

java - 使用bat命令永久设置java环境变量值

windows - 如何在没有路径名CMD的情况下列出目录/子目录中的所有文件?

java - 使用java执行批处理文件后无法关闭命令提示符

batch-file - 第一次调用其他批处理脚本后批处理脚本停止

windows - 通过命令提示符只获取以太网 MAC 地址

batch-file - 批处理 : Escaping with caret