【问题标题】:For /L loop with padded number带填充数字的 /L 循环
【发布时间】:2012-07-02 19:09:03
【问题描述】:

我希望创建一个嵌套的 for 循环来处理一些文件。我已经广泛寻找解决方案,并找到了许多类似的版本,但由于这是我第一次在组合方法来做我想做的事情时遇到问题。

基本上 - 我想要一个 FOR /L 循环,该循环在从 001 到 500 的填充数字范围内循环。

我知道我可以指定一个范围 (1,1,500),但显然不能指定为 (001,001,500)。如何添加 00,然后当 %%a > 9 时,仅添加 0?我想这是一种刺痛,但也许还有另一种方法?

我希望的代码(显然是错误的):

@echo off
for %%a in (001,001,500) do (
echo %%a
for %%s in (control scenario) do (
echo %%s
svic_ensemble.exe 28009_Trent_at_Colwick.cal Trent_%%s_%%a.txt 28009_Trent_at_Colwick.txt     Trent_%%s_%%a.out
)
)
pause

非常感谢

埃德

【问题讨论】:

标签: for-loop batch-file range


【解决方案1】:

您可以通过字符串操作来解决它。
首先在数字前加上两个零,然后只取最后三个字符。

setlocal EnableDelayedExpansion
for /L %%n in (1 1 500) do (
  set "num=00%%n"
  set "num=!num:~-3!"
  echo !num!
)

【讨论】:

    【解决方案2】:

    获得零填充的最简单方法是填充大量零,然后使用子字符串:

    set Number=1
    set PaddedNumber=000000%Number%
    set PaddedNumber=%PaddedNumber:~-3%
    

    您可以调整它以在循环中使用,尽管您需要延迟扩展:

    setlocal enabledelayedexpansion
    for /l %%a in (1, 1, 500) do (
      set num=000%%a
      set num=!num:~-3!
      for %%s in (control scenario) do (
        svic_ensemble.exe 28009_Trent_at_Colwick.cal Trent_%%s_!num!.txt 28009_Trent_at_Colwick.txt     Trent_%%s_!num!.out
      )
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 2021-04-21
      相关资源
      最近更新 更多