我在从两个变量中获取值时遇到了问题。可能听起来很复杂,因为我的英语不是很好。
我使用变量rXY来创建xy网格,其中X是x位置,Y是y位置。我用随机字符填充网格,但现在我想得到一个点的值。
echo %r23%可以工作,但是如果我向用户询问坐标(设置/P p_x=),那么echo %r%p_x%%p_y%%将不会工作。
有没有可能通过这种方式获得价值?
代码示例:
echo off
cls
FOR /L %%Y IN (1,1,4) DO (FOR /L %%X IN (1,1,4) DO set r%%X%%Y=.)
echo Y
echo 4 %r14% %r24% %r34% %r44%
echo 3 %r13% %r23% %r33% %r43%
echo 2 %r12% %r22% %r32% %r42%
echo 1 %r11% %r21% %r31% %r41%
echo 0 1 2 3 4 X
set /P input=Please enter X and Y pos:
set p_x=%input:~0,1%
set p_y=%input:~1,2%
echo X=%p_x%
echo Y=%p_y%
echo [2,3]=%r23%
echo %r%p_x%%p_y%
pause发布于 2011-03-03 04:53:30
使用(可怕的) delayed 。
setlocal enabledelayedexpansion
echo !r%p_x%%p_y%!在实际执行时,%variables%在行被解析时展开,!variables! -在实际执行时展开。
发布于 2011-03-03 14:20:53
您可以通过不同的方式实现延迟扩展:
CALL ECHO %%r%p_x%%p_y%%%几乎没有那么可怕,但至少省去了发出特殊命令的需要(老实说,这仍然是一个值得怀疑的优势)。
它是如何工作的。double %的计算结果为文字%,然后这两个变量的值被计算为它们的值,最后您还有一个double %,它将被相应地处理。
这是在执行该行之前进行的第一次解析。在执行时,该行采用(例如) CALL ECHO %r21%的形式。
正如您可以猜到的那样,当调用CALL命令时,将进行第二次解析,这一次%r21%被严格地计算为其各自的值。
https://stackoverflow.com/questions/5172881
复制相似问题