内部运算的循环批处理文件(Arithmetic inside a for loop batch fi

2019-07-31 04:31发布

我有一个在批处理文件看起来像这样的循环:

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

该行:

set /a x = y/25

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

Answer 1:

环境变量,无需扩大在SET / A语句中使用。 但对于变量必须扩大。

此外,即使你的工作计算,回声会因为百分号展开时的声明被解析,并为构建整个一次解析失败。 所以%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%%
)


Answer 2:

它没有做任何事情,因为“Y”仅仅是一个字母。 您需要百分号引用变量。

set /a x = %%y/25


文章来源: Arithmetic inside a for loop batch file