0

これらをループしてsthを出力したい。

@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

どうすれば問題に取り組むことができますか? 前もって感謝します。

4

2 に答える 2

2

遅延展開を使用しない代替:

set ans=yyynny
for /l %%i in (0,1,5) do (call echo %%ans:~%%i,1%%)
于 2012-07-31T12:25:22.900 に答える
1

FORループ内で変数を展開するには、遅延展開を有効にして、解析時に展開されるのではなく、実行時に変数が展開されるようにする必要があります。

試す

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

変数は!ans!ではなく 、わずかに異なる構文で参照されることに注意してください%ans%

于 2012-07-31T05:48:46.400 に答える