批处理文件字符串连接

时间:2013-02-28 14:10:46

标签: string batch-file

为什么这个字符串没有连接?

@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

2 个答案:

答案 0 :(得分: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包含冗长的描述,正是您的例子。

答案 1 :(得分:0)

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