2

この文字列が連結されないのはなぜですか?

@echo off
set NUM_NODES=4
set ENSEMBLE=127.0.0.1:2181

for /l %%x in (2, 1, %NUM_NODES%) do (
    echo %%x
   set ENSEMBLE=%ENSEMBLE%,127.0.0.1:2%%x81
)
echo ensemble: %ENSEMBLES%

出力:

2
3
4
ensemble: 127.0.0.1:2181,127.0.0.1:2481
4

2 に答える 2

5

バッチ ファイルでは、実行の直前ではなく、コマンドが解析されるときに変数が展開されるためです。後者の動作が必要な場合は、遅延展開を使用する必要があります。

setlocal enabledelayedexpansion
@echo off
set NUM_NODES=4
set ENSEMBLE=127.0.0.1:2181

for /l %%x in (2, 1, %NUM_NODES%) do (
    echo %%x
   set ENSEMBLE=!ENSEMBLE!,127.0.0.1:2%%x81
)
echo ensemble: %ENSEMBLES%

help set長い説明とまさにあなたの例が含まれています。

于 2013-02-28T14:13:34.037 に答える