批处理文件字符串连接 [英] Batch file string concatenation
本文介绍了批处理文件字符串连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这是为什么不是字符串串联?
关闭@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屋!
查看全文