-1

このコードは、文字と文字のすべての行番号をエコーし​​ますが、正確には正しくありません。修正してみてください。主なことは、%%m の代わりに変数カウントを維持する必要があることです。電話で列を説明してください!!!

そして、入力単語の最後の文字を表示する最後の行を作成する方法。

@ECHO OFF

:input
set /p word=input your word:
if not defined word goto input
(ECHO %word%)> tempfile.txt

FOR %%x IN (tempfile.txt) DO ( SET /A lenght=%%~zx - 2 )
del tempfile.txt
echo %word% got %lenght% characters

setlocal enabledelayedexpansion
for /l %%m in (1,1,!lenght!) do (
    set /a count=0
    set /a count=count+%%m
    call echo !count! %%word:~!count!,1%%
) 
endlocal

pause

したがって、出力は次のとおりです。

input your word:qwertzuio
qwertzuio got 9 characters
1 w
2 e
3 r
4 t
5 z
6 u
7 i
8 o
9

Press any key to continue...
4

2 に答える 2

1

文字をエコーする場合!count!、インデックスとして使用していますがcount、1 から開始していますが、0 からインデックスを開始する必要があります。

これを試して:

for /l %%m in (1,1,!lenght!) do (
    set /a count=%%m
    set /a index=%%m-1
    call echo !count! %%word:~!index!,1%%
) 

0から始まるように設定indexしていますが、1ベースのままです。(また、役に立たなかった余分なものを取り除きました。)%%m-1countset /a count=0

出力例を次に示します。

input your word:foo
foo got 3 characters
1 f
2 o
3 o
Press any key to continue . . .
于 2013-04-05T13:34:02.680 に答える
0

このコード セクション:

for /l %%m in (1,1,!lenght!) do (
    set /a count=0
    set /a count=count+%%m
    call echo !count! %%word:~!count!,1%%
)

ナンセンスです。反復ごとに、最初に count をゼロに設定し、次に %%m を追加します。最終的な結果として、count は常に %%m と等しくなります。count を削除して代わりに %%m を使用すると、まったく同じ結果が得られる場合があります。

for /l %%m in (1,1,!lenght!) do (
    echo %%m !word:~%%m,1!
)

一方、文字列の位置は 1 ではなく 0 から始まるため、Nate が前に言ったようにインデックスを調整する必要があります。ただし、部分文字列の抽出に FOR 変数を直接使用し、追加の CALL コマンドを回避するには、FOR 制限を次のように変更すると便利です。

set /A lenMinus1=lenght-1
for /l %%m in (0,1,%lenMinus1%) do (
    set /a position=%%m+1
    echo !position! !word:~%%m,1!
)

アントニオ

于 2013-04-05T14:35:16.890 に答える