For loop 带填充编号的For/L循环

For loop 带填充编号的For/L循环,for-loop,batch-file,range,For Loop,Batch File,Range,我希望创建一个嵌套的for循环,以便处理一些文件。我已经广泛地寻找了解决方案,并找到了许多类似的版本,但由于这是我第一次在组合方法来完成我想要的事情时遇到困难 基本上-我想要一个FOR/L循环,循环通过一系列从001到500的填充数字 我知道我可以指定一个范围(1,1500),但显然不能指定为(001500)。如何添加00,然后在%%a>9时添加0?我想这是一种刺痛,但也许还有另一种方式 我希望的代码(显然是错误的): 非常感谢 Ed获得零填充的最简单方法是填充大量的零,然后使用子字符串: se

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

基本上-我想要一个FOR/L循环,循环通过一系列从001到500的填充数字

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

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

非常感谢


Ed

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

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
  )
)

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

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

@LưuVĩnhPhúc的可能重复我的问题比较老-所以你应该在另一个问题上加上重复的标签,时间在这里无关紧要
setlocal EnableDelayedExpansion
for /L %%n in (1 1 500) do (
  set "num=00%%n"
  set "num=!num:~-3!"
  echo !num!
)