在Windows批处理中的循环中使用变量替换另一个变量中的子字符串

问题描述 投票:1回答:1

假定下面的代码在每次迭代中都将变量dir中的col3子字符串替换为变量var的值,但是这样做没有成功。有人知道这段代码有什么问题吗?

代码:

@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET dir=col1 col2 col3 col4 col5 col6 col7 col8
FOR /L %%i IN (1,1,5) DO (
SET var=v%%i
SET dir=!dir:col3=%var%!
ECHO !dir!
)
PAUSE

输出:

col1 col2  col4 col5 col6 col7 col8
col1 col2  col4 col5 col6 col7 col8
col1 col2  col4 col5 col6 col7 col8
col1 col2  col4 col5 col6 col7 col8
col1 col2  col4 col5 col6 col7 col8

期望的输出:

col1 col2 v1 col4 col5 col6 col7 col8
col1 col2 v2 col4 col5 col6 col7 col8
col1 col2 v3 col4 col5 col6 col7 col8
col1 col2 v4 col4 col5 col6 col7 col8
col1 col2 v5 col4 col5 col6 col7 col8
batch-file cmd
1个回答
0
投票

经过数小时的搜索此问题,我发现更改了线路

SET dir=!dir:col3=%var%!

to

SET dir=%dir:col3=!var!%

简单地解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.