是否有可能知道for循环中的当前循环索引?

时间:2015-05-28 14:23:27

标签: batch-file cmd

我有一个像这样的.bat文件:

@echo OFF

if "%1" == "" (
    set pattern=*
) else (
    set pattern=%1
)

for %%g in (%pattern%) do echo   %%g

执行listfile.bat setenv*.bat,输出如下内容:

  setenv-win7x64-chk.bat
  setenv-win7x64-fre.bat
  setenv-winxp-chk.bat
  setenv-winxp-fre.bat

我的问题是:如何输出如下:

[1]  setenv-win7x64-chk.bat
[2]  setenv-win7x64-fre.bat
[3]  setenv-winxp-chk.bat
[4]  setenv-winxp-fre.bat

是否有一个秘密变量告诉我当前的循环索引? - 就像Autohotkey的A_Index变量一样。

2 个答案:

答案 0 :(得分:2)

答案是“不”,但你可以用一种非常简单的方式添加一个计数变量:

@echo OFF
setlocal EnableDelayedExpansion

if "%1" == "" (
    set pattern=*
) else (
    set pattern=%1
)

set i=0
for %%g in (%pattern%) do (
   set /A i+=1
   echo [!i!]  %%g
)

答案 1 :(得分:1)

为了简单起见,我建议让工具进行枚举:

( for %%g in (%pattern%) do @echo %%g ) | find /n /v ""