批处理 - 附加字符串

时间:2013-01-30 19:59:41

标签: string loops batch-file paste

我正在尝试创建一个必须回显只包含两个字符的字符串的for语句。 字符串的类型将类似于“aaabbb”。 我的问题是echo命令每次调用时都会生成一个新行,所以如果我写了类似的东西:

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

结果如下:

a
a
a
b
b
b

我的想法是“也许回应一个独特的字符串?” 所以我想知道是否有一种方法可以在另一个变量中附加一个字符/变量。

感谢您的支持, 等待回复, 戴夫。

1 个答案:

答案 0 :(得分: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 =表示栏的空白部分的字符