batch-file - 批量双变量?(或绕过它们的方法?)
问题描述
我正在做一个纸牌游戏,所以我试图设置一个数字可以使用的特定次数,所以我基本上是在寻找一种方法来做“双变量”或绕过它们:
@echo off
color 0a
set 1=13
set 2=13
set 3=13
set 4=13
:loop
if %counter%==0
goto :skip
set /a card=%random%*4/32767+1
set %card%=%%card%%-1
goto :loop
:skip
……
解决方案
我认为这就是你想要的逻辑。你的假设是正确的。您确实需要双变量扩展。这可以通过两种方式实现。使用延迟扩展或使用CALL
命令。我选择了后者。对于示例,我将计数器设置为 13,并在每次循环后不断回显每个变量的内容。
@echo off
set _1=13
set _2=13
set _3=13
set _4=13
set "counter=13"
:loop
IF "%counter%"=="0" goto skip
set /a card=%random% %% 4 +1
call set /a _%card%=%%_%card%%% - 1
echo _1=%_1%
echo _2=%_2%
echo _3=%_3%
echo _4=%_4%
set /a counter-=1
goto :loop
:skip
pause
编辑:现在我再看一遍,您实际上根本不需要使用CALL
或延迟扩展,因为该SET
命令会为您处理它。
@echo off
set _1=13
set _2=13
set _3=13
set _4=13
set "counter=13"
:loop
IF "%counter%"=="0" goto skip
set /a card=%random% %% 4 +1
set /a _%card%-=1
echo _1=%_1%
echo _2=%_2%
echo _3=%_3%
echo _4=%_4%
set /a counter-=1
goto :loop
:skip