Пакетный файл: функция, создать строку определенного символа, х раз - PullRequest
0 голосов
/ 05 марта 2012

Пожалуйста, помогите с моим сценарием не работает.

@echo off
echo Printing repeated character
call :printStrings retVal 3 #
echo Returned String: "%retVal%"
PAUSE
:printStrings
(   
    setlocal EnableDelayedExpansion
    set /a "Number=%~2"
    rem set /a "counter=60-!Number!"
    set "returnStr="
    set "repeatChar=%~3"
    rem echo Character to repeat: %repeatChar%
    FOR /L %%G IN (1,1,!Number!) DO (
        set "returnStr=%returnStr%%repeatChar%"             
        echo Adding character
    )   
)
( 
    endlocal    
    set "%~1=%returnStr%"
    rem set "%~1=%repeatChar%"
    exit /b
)

Мне нужно напечатать определенный символ x количество раз, вызывая функцию, поэтому, если я делаю

call :printStrings retVal 3 #

Ожидаемый результат будет

Возвращаемая строка: "###"

1 Ответ

0 голосов
/ 05 марта 2012

Вы используете DelayedExpansion, но не в важной строке.
set "returnStr=%returnStr%%repeatChar%" не удастся, так как расширение% returnStr%, а также% repeatChar% выполняется до строки будет выполнено.

Измените его на set "returnStr=!returnStr!!repeatChar!", и оно должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...