2017-09-18 27 views
-2

これは、私がヤッツェーの試合に持っている別の質問です。私は6回実行する "FOR"ループを設定する必要があります。ローリングダイスのFORループを設定する

:roll 
    cls 
    pause 
    SET /A dice=%RANDOM% %%6 +1 
     if %dice%==1 (
     echo %dice1a% 
     echo %dice1b% 
     echo %dice1c% 
     echo %dice1d% 
     echo %dice1e% 
     echo %dice1f% 
     echo %dice1g% 
    ) 
     if %dice%==2 (
     echo %dice2a% 
     echo %dice2b% 
     echo %dice2c% 
     echo %dice2d% 
     echo %dice2e% 
     echo %dice2f% 
     echo %dice2g% 
    ) 
     if %dice%==3 (
     echo %dice3a% 
     echo %dice3b% 
     echo %dice3c% 
     echo %dice3d% 
     echo %dice3e% 
     echo %dice3f% 
     echo %dice3g% 
    ) 
     if %dice%==4 (
     echo %dice4a% 
     echo %dice4b% 
     echo %dice4c% 
     echo %dice4d% 
     echo %dice4e% 
     echo %dice4f% 
     echo %dice4g% 
    ) 
     if %dice%==5 (
     echo %dice5a% 
     echo %dice5b% 
     echo %dice5c% 
     echo %dice5d% 
     echo %dice5e% 
     echo %dice5f% 
     echo %dice5g% 
    ) 
     if %dice%==6 (
     echo %dice6a% 
     echo %dice6b% 
     echo %dice6c% 
     echo %dice6d% 
     echo %dice6e% 
     echo %dice6f% 
     echo %dice6g% 
     ) 

これは私がforループに入れたいコードで、6回ダイスフェイスをエコーするために6回実行します。これは私が作成しているコードの一部にすぎません。私に教えるのに役立つものがあれば(例えば、マルチストリング変数を作るのと同じように)、リンクにコメントするか、それを行う方法を教えてください。

+1

とVARの内容を参照https://stackoverflow.com/questions/1355791/how-do -you-loop-in-a-windows-batch-file – sohaib

+0

[この回答を読む]ことをお勧めします(https://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures -in-cmd-exe-batch-script/10167990#10167990) – Aacini

答えて

0

バッチファイルを実行するときに特別なことがあります。これはループアンローリングと呼ばれています。つまり、コマンド実行前に%var%が展開され、%RANDOM%が静的​​にレンダリングされます。あなたのスクリプトの先頭にsetlocal enabledelayedexpansionを必要とするこの問題を回避し、%var%の代わりに!var!を使用するには:

for %%i in (1 2 3 4 5 6) do (
    set /a dice=!RANDOM! %%6+1 
    echo dice%%i = !dice! 
) 

することは、%をマスクするだけの方法ですので、あなたが%%6を変更する必要はありません。

+1

これらの回答を教えてくれてありがとうございます。私はまだそれらを見る時間がありませんが、私は私はチャンスがあるとき、彼らは働くかしないか。 – IronFlame

0

すべてのIFを使用する代わりに、delayedexpansionを使用して書体を参照します。 いずれ疑似呼びを使用し、percentsigns倍増または初期setlocal enabledelayedexpansion有すると!

Setlocal EnableDelayedExpansion 
:roll 
cls 
pause 
SET /A dice=%RANDOM% %%6 +1 
echo !dice%dice%a! 
echo !dice%dice%b! 
echo !dice%dice%c! 
echo !dice%dice%d! 
echo !dice%dice%e! 
echo !dice%dice%f! 
echo !dice%dice%g! 

または

:roll 
cls 
pause 
SET /A dice=%RANDOM% %%6 +1 
call echo %%dice%dice%a%% 
call echo %%dice%dice%b%% 
call echo %%dice%dice%c%% 
call echo %%dice%dice%d%% 
call echo %%dice%dice%e%% 
call echo %%dice%dice%f%% 
cALL echo %%dice%dice%g%% 
+1

簡略化: 'for %% in a(a b c d e f g)エコー!ダイス%dice %%% a!' – Aacini

関連する問題