批处理文件字符串连接 [英] Batch file string concatenation

查看:753
本文介绍了批处理文件字符串连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是为什么不是字符串串联?

 关闭@echo
设置NUM_NODES = 4
集ENSEMBLE = 127.0.0.1:2181为/升%%中的x(2,1,%NUM_NODES%)做(
    回声%%点¯x
   设置ENSEMBLE =%ENSEMBLE%,127.0.0.1:2 %% X81

回声乐团:%ENSEMBLES%

OUTPUT:

  2
3
4
合奏:127.0.0.1:2181,127.0.0.1:2481


当一个命令的解析<​​/ em>的,不会立即之前它的执行,因为在批处理文件中的变量

解决方案

被扩展。如果你想后者的行为,则需要使用延迟扩展:

  SETLOCAL enabledelayedexpansion
关闭@echo
设置NUM_NODES = 4
集ENSEMBLE = 127.0.0.1:2181为/升%%中的x(2,1,%NUM_NODES%)做(
    回声%%点¯x
   !设置ENSEMBLE = ENSEMBLE,127.0.0.1:2 %% X81

回声乐团:%ENSEMBLES%

帮助集包含一个冗长的说明和准确的例子。

Why is this string not concatenating?

@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

解决方案

Because in batch files variables are expanded when a command is parsed, not immediately prior to its execution. If you want the latter behaviour, you need to use delayed expansion:

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 contains a lengthy description and exactly your example.

这篇关于批处理文件字符串连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆