首页 > 解决方案 > 批量双变量?(或绕过它们的方法?)

问题描述

我正在做一个纸牌游戏,所以我试图设置一个数字可以使用的特定次数,所以我基本上是在寻找一种方法来做“双变量”或绕过它们:

@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

……

标签: batch-filevariables

解决方案


我认为这就是你想要的逻辑。你的假设是正确的。您确实需要双变量扩展。这可以通过两种方式实现。使用延迟扩展或使用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

推荐阅读