2012-03-05 16 views
0

スクリプトがうまくいかず動作しない場合は、どうか教えてください。バッチファイル:関数、特定の文字の文字列を作成するx回数

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

の予想される出力は次のようになります

返される文字列:「###」

+0

_myスクリプトがworking_されていない動作するはずです、なるほど、あなたはiPhone上でテストまたはあなたがLinux上でそれを試みた、またはどの部分が動作しませんか? – jeb

+0

"文字の追加"が3回印刷されても、返される値は常に空です。 – Zenellie

+0

http://rosettacode.org/wiki/Repeat_a_string#4DOS_Batchは面白いです –

答えて

0

DelayedExpansionは使用しますが、重要な行には使用しません。
set "returnStr=%returnStr%%repeatChar%"は、%returnStr%の展開と%repeatChar%の展開が行われるので、の前に行が実行されます。

set "returnStr=!returnStr!!repeatChar!"に変更し、それを、それが

関連する問題