2

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

我正在尝试使用 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。

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

4

1 回答 1

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!"将点放在两个部分之间

于 2012-06-21T13:05:55.313 回答