0

2文字のみを含む文字列をエコーする必要があるforステートメントを作成しようとしています。文字列のタイプは「aaabbb」のようになります。私の問題は、echoコマンドを呼び出すたびに新しい行が作成されるため、次のように記述した場合です。

FOR %%i IN (<condition>) DO ECHO a
FOR %%i IN (<condition>) DO ECHO b

結果は次のようになります。

a
a
a
b
b
b

「たぶん、ユニークな弦をエコーし​​ているのだろうか」と私は思いました。それで、別の変数に文字/変数を追加するメソッドかどうか疑問に思います。

デイブ、ご支援ありがとうございます。

4

1 に答える 1

0

解決:

@ECHO off &SETLOCAL EnableDelayedExpansion

:vars
    SET "fC=a"
    SET "sC=b"
    SET "toEcho="

    PAUSE

    FOR /L %%f IN (1, 1, 3) DO (
        IF %%f == 1 SET "toEcho=!toEcho!%fC%"
        IF %%f == 2 SET "toEcho=!toEcho!%fC%"
        IF %%f == 3 SET "toEcho=!toEcho!%fC%"
    )

    FOR /L %%f IN (4, 1, 6) DO (
        IF %%f == 4 SET "toEcho=!toEcho!%sC%"
        IF %%f == 5 SET "toEcho=!toEcho!%sC%"
        IF %%f == 6 SET "toEcho=!toEcho!%sC%"
    )

    ECHO %toEcho%

GOTO end

:end
    PAUSE

実際のプロジェクトはバーでした。完了レベルのパーセンテージをパラメーターとしてラベルに与えると、完全な読み込みバーになります!

最初のパラメーターは、どのように大きくなければならないかという情報です。

:bar size loaded
    CLS

    SET /A "toDo=(%~1*%~2)/100"
    SET /A "remains=%~1-%toDo%"
    ECHO %~2%%

    SET "bar_up=%corUL%"
    FOR /L %%i IN (1, 1, %~1) DO SET "bar_up=!bar_up!%linHo%"
    SET "bar_up=!bar_up!%corUR%
    ECHO %bar_up%

    SET "bar_ce=%linVe%"
    FOR /L %%i IN (1, 1, %toDo%) DO SET "bar_ce=!bar_ce!%barDo%"
    FOR /L %%i IN (1, 1, %remains%) DO SET "bar_ce=!bar_ce!%barSp%"
    SET "bar_ce=!bar_ce!%linVe%
    ECHO %bar_ce%

    SET "bar_do=%corDL%"
    FOR /L %%i IN (1, 1, %~1) DO SET "bar_do=!bar_do!%linHo%"
    SET "bar_do=!bar_do!%corDR%
    ECHO %bar_do%

    EXIT /B

その他の変数は次のとおりです。

corUL = 左上隅の文字

corUR = 右上隅の文字

corDL = 左下隅の文字

corDR = 右下隅の文字

linHo = 横線文字

linVe = 縦線の文字

barDo = バーの完了部分を示す文字

barSp = バーの空白部分を示す文字

于 2013-01-31T16:08:39.103 に答える