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 回答
0

原始示例和答案都包含相同的拼写错误,在 ECHO 语句中的变量末尾添加了一个 S,因此两个示例都不会从变量中产生任何输出。

于 2013-06-21T21:51:14.700 回答