繁体   English   中英

Windows批处理变量

[英]Windows batch variables

我有从变量两个变量获得价值的问题。 听起来很复杂,因为我的英语不是最好的。

我使用变量rXY来制作xy网格,其中X是x pos,Y是y pos。 我用随机字符填充网格,但现在我想获得一点的价值。

echo%r23%可以工作,但是如果我问用户的坐标(set / 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

使用(可怕的) 延迟扩展

setlocal enabledelayedexpansion
echo !r%p_x%%p_y%!

解析行时扩展%variables% !variables! - 在实际执行时。

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

CALL ECHO %%r%p_x%%p_y%%%

几乎不那么可怕,但至少让你不必发出特殊命令(说实话,仍然是有问题的优势)。

这个怎么运作。 double %计算为文字% ,然后将两个变量计算为它们的值,最后还有一个双倍的% ,相应地进行处理。

这是在执行该行之前立即发生的第一次解析。 到执行时,该行采用(例如) CALL ECHO %r21%

正如您所猜测的那样,当CALL命令时,会发生第二次解析,并且这次%r21%被严格评估为其各自的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM