我如何用bat进行循环

时间:2012-07-31 05:36:36

标签: file loops batch-file for-loop

我想把它们循环到输出......

@echo off
set ans=yyynny
echo %ans:~0,1%
echo %ans:~1,1%
echo %ans:~2,1%
echo %ans:~3,1%
echo %ans:~4,1%
echo %ans:~5,1%
pause

输出:

y
y
y
n
n
y

在“帮助”之后我得到了

set ans=yyynny
for /l %%i in (0,1,5) do (echo %ans:~%%i,1%)
pause

课程,它不起作用。它输出这些:

yyynny
yyynny
yyynny
yyynny
yyynny

我该如何解决这个问题?提前谢谢。

2 个答案:

答案 0 :(得分:2)

替代不使用延迟扩展:

set ans=yyynny
for /l %%i in (0,1,5) do (call echo %%ans:~%%i,1%%)

答案 1 :(得分:1)

FOR循环中变量的扩展要求您启用延迟扩展以强制变量在运行时展开,而不是在解析时展开。

尝试

@echo off
setlocal enabledelayedexpansion
set ans=yyynny
for /l %%i in (0,1,5) do (echo !ans:~%%i,1!)

请注意,该变量的语法略有不同!ans!而不是%ans%