2013-02-28 139 views
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% 

OUTPUT:

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

回答

4

因为在批处理文件时的命令是解析,不执行其之前立即变量被扩展。如果你想后者的行为,则需要使用延迟扩展:

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包含一个冗长的描述和准确的例子。

+0

真棒作品!刚刚让我从deadend林荫大道谢谢了 – Stainedart 2013-02-28 14:16:12

0

原始示例和答案都包含相同的打字错误,并将E添加到ECHO语句中变量的末尾,因此,无论哪种示例都会生成变量的输出。

相关问题