0

わかりました、ここで助けが必要です。variable1 (たとえば、eat1=apple)、variable2 (これは eat2=orange)、および variable3 (appaleorange=apple and orange) がある場所でこれを実行しました。これを行うにはそれが必要です:

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

今、あなたは私の問題を見ることができます。上記のスクリプトでは単語は表示されず、appleorange のみが表示されます。これは私のスクリプトではありません。これが必要な理由は、数値を含む変数が複数あるためです。以前にこれを行ったことがありますが、方法を忘れていました... 呼び出しを行ってから複数の % を実行できることは知っています。

この場合、私は 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 は非効率的です。1 回の 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 に答える