平方步长变量 - 批处理循环



是否可以对批处理中的增量/步长变量进行平方 for 循环。

这就是它现在的样子

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

但是,与其每次都上涨 1000,不如2^10, 2^11 .... 2^20 (1048576)可以做到这一点?

不,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!
)

如果切换到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))
}

最新更新