0

好的,我在这里需要帮助。在你有变量1(假设它是eat1=apple)、变量2(这是eat2=orange)和variable3(appaleorange=apple 和orange)之前,我已经这样做了。我需要它来做到这一点:

    echo Apple:%eat1%
    echo Orange:%eat2%
    echo Apple & Orange:%eat1%%eat2%

现在,你可以看到我的问题了。上面的脚本不会显示这个词,只有苹果橙。那不是我的脚本,我需要它的原因是因为我有多个变量,其中包含数字。我以前做过这个,但我忘记了如何......我知道你可以打一个电话,然后打多个 %'s。

在这种情况下,我希望 fterm 变量是 fterm (不知道如何将它放在那里而不是变量)和 stermnum 作为一个在脚本的其他部分经常更改的数字。

我的代码:

    set stermnum=1
    call set exsternum=%%fterm%%stermnum%%%
    echo Selected term:%stermnum% ^(%exsternum%^)

有谁知道该怎么做?谢谢,对不起,它很长:P

~编辑:我发现了...如果它对我所做的任何人有帮助:调用 set exsternum=%%fterm%stermnum%%

很抱歉发布了这个,即使我这么快就想通了

4

1 回答 1

3

OP 为问题附加了解决方案,但它与原始问题场景无关,并且仍然存在错误。

这是原始场景中OP的解决方案:

set "eat1=apple"
set "eat2=orange"
set "appleorange=apple and orange"
call echo %%%eat1%%eat2%%%

对于实际代码,我相信 OP 想要访问一个名为 fterm1、fterm2、fterm3 等的变量数组。数字后缀在一个名为 stermnum 的变量中。

call set exsternum=%%fterm%stermnum%%%

如果 fterm 本身是一个包含数组基本名称的变量,则解决方案变为:

call set exsternum=%%%fterm%%stermnum%%%

但是 CALL 效率低下 - 单个 CALL 可能不会引起注意,但如果在循环中执行数千次,它会变得非常缓慢。

使用延迟扩展有一个更快的解决方案。延迟扩展必须在使用前启用。

原始场景:

setlocal enableDelayedExpansion
set "eat1=apple"
set "eat2=orange"
set "appleorange=apple and orange"
echo !%eat1%%eat2%!

实际代码,解释1:

setlocal enableDelayedExpansion
REM additonal code ...
set exsternum=!fterm%stermnum%!

实际代码,解释2:

setlocal enableDelayedExpansion
REM additonal code ...
set exsternum=!%fterm%%stermnum%!
于 2013-02-09T13:23:41.100 回答