windows - Batch File: Funktion, lav streng af et bestemt tegn, x antal gange

Indlæg af Hanne Mølgaard Plasc

Problem



Hjælp venligst med mit script fungerer ikke.


@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
)


Jeg skal udskrive et bestemt tegn x antal gange ved at kalde funktionen, så hvis jeg gør det


call :printStrings retVal 3 #


Forventet output vil være


Returneret streng: '###'

Bedste reference


Du bruger den DelayedExpansion, men ikke på den vigtige linje.

set "returnStr=\%returnStr\%\%repeatChar\%" vil mislykkes, da udvidelsen af\% returnStr\% og også af\% repeatChar\% er udført før linjen vil blive udført.


Skift det til set "returnStr=!returnStr!!repeatChar!", og det skal fungere