循环遍历非整数值

时间:2012-06-21 12:53:22

标签: windows batch-file

如何使用批处理文件循环遍历非整数值?

我正在尝试使用0到1之间的不同参数多次运行我的应用程序,如下所示:

!! DO NOT RUN THIS !!
set application=C:\path\to\my\application.exe

for /L %%p in (0, 0.05, 1) do (
  md %%p
  cd %%p
  START %application% %%p
  cd ..
)

但是运行上面的代码会让我进入一个无限循环,我想因为for /L正在寻找整数参数而0.05被转换为0。

是否可以使用批处理文件循环遍历非整数值?

1 个答案:

答案 0 :(得分:3)

不可能,因为cmd.exe无法以任何方式处理实际值。

但你可以计算整数并稍后计算实际值。

setlocal EnableDelayedExpansion
for /L %%p in (0, 5, 100) do (
  set "value=00%%p"
  set "value=!value:~-3!"
  set "prefix=!value:~0,1!"
  set "postfix=!value:~-2!"
  set "num=!prefix!.!postfix!"
  md !num!
  pushd !num!
  START %application% !num!
  popd
)

现在代码计数从0到100 每个号码都会以00为前缀,以确保每个号码至少有三位数字(例如2-> 002)。 然后我只取最后三个字符,所以所有数字都有相同的长度。

5->005->005
15->0015->015

然后代码将数字分成两部分

015->prefix=0 postfix=15

然后set "num=!prefix!.!postfix!"将点放在两部分之间