首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows批处理变量

Windows批处理变量
EN

Stack Overflow用户
提问于 2011-03-03 04:14:54
回答 2查看 2.3K关注 0票数 3

我在从两个变量中获取值时遇到了问题。可能听起来很复杂,因为我的英语不是很好。

我使用变量rXY来创建xy网格,其中X是x位置,Y是y位置。我用随机字符填充网格,但现在我想得到一个点的值。

echo %r23%可以工作,但是如果我向用户询问坐标(设置/P p_x=),那么echo %r%p_x%%p_y%%将不会工作。

有没有可能通过这种方式获得价值?

代码示例:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-03 04:53:30

使用(可怕的) delayed

代码语言:javascript
复制
setlocal enabledelayedexpansion
echo !r%p_x%%p_y%!

在实际执行时,%variables%在行被解析时展开,!variables! -在实际执行时展开。

票数 3
EN

Stack Overflow用户

发布于 2011-03-03 14:20:53

您可以通过不同的方式实现延迟扩展:

代码语言:javascript
复制
CALL ECHO %%r%p_x%%p_y%%%

几乎没有那么可怕,但至少省去了发出特殊命令的需要(老实说,这仍然是一个值得怀疑的优势)。

它是如何工作的。double %的计算结果为文字%,然后这两个变量的值被计算为它们的值,最后您还有一个double %,它将被相应地处理。

这是在执行该行之前进行的第一次解析。在执行时,该行采用(例如) CALL ECHO %r21%的形式。

正如您可以猜到的那样,当调用CALL命令时,将进行第二次解析,这一次%r21%被严格地计算为其各自的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5172881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档