Batch file 可以知道for循环中的当前循环索引吗?
我有这样一个.bat文件:Batch file 可以知道for循环中的当前循环索引吗?,batch-file,cmd,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
@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
变量一样。为了简单起见,我建议使用工具进行枚举:
( for %%g in (%pattern%) do @echo %%g ) | find /n /v ""
为了简单起见,我建议使用工具进行枚举:
( for %%g in (%pattern%) do @echo %%g ) | find /n /v ""
答案是“否”,但您可以通过非常简单的方式添加计数变量:
@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
)
答案是“否”,但您可以通过非常简单的方式添加计数变量:
@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
)
我建议不要使用
cmd.exe
shell脚本,而是使用PowerShell。它在几乎所有可以想象的方面都非常优秀。我建议不要使用cmd.exe
shell脚本,而是使用PowerShell。它在几乎所有可以想象的方面都非常出色。好的提示,最好在嵌套回声之前添加一个@。好的提示,最好在嵌套回声之前添加一个@。