平方步变量 - 批量循环

时间:2015-03-16 12:58:22

标签: batch-file for-loop

是否可以在批量循环中对增量/步长变量求平方。

这就是它现在的样子

FOR /L %%A IN (1024,1000, 1048576) DO (
   do stuff
)

然而,不是每次都增加1000,我想在2^10, 2^11 .... 2^20 (1048576)上升,是否可以这样做?

2 个答案:

答案 0 :(得分:3)

不,for /l循环无法处理几何增量。但你可以使用批处理算术

for /l %%a in (10 1 20) do (
    set /a "A=1<<%%a"
    setlocal enabledelayedexpansion
    for %%A in (!A!) do ( endlocal 

        rem Your code here - do stuff
        echo %%A

    )
)

需要延迟扩展来处理代码块内的变化变量。如果您的内部代码没有延迟扩展活动的问题,可以将其简化为

setlocal enabledelayedexpansion
for /l %%a in (10 1 20) do (
    set /a "A=1<<%%a"

    rem Your code here - do stuff
    echo !A!

)

答案 1 :(得分:1)

如果切换到PowerShell很适合您,可以使用

foreach ($i in 1..3) {
  # example output
  echo "1000^$i = $([Math]::Pow(1024, $i))"

  # start "myprogram.bat --parameter $x
  & 'myprogram.bat' @("--parameter", [Math]::Pow(1024, $i))
}