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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows批处理中的循环中使用变量替换另一个变量中的子字符串相关的知识,希望对你有一定的参考价值。

假定下面的代码在每次迭代中都将变量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
答案

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

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

to

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

简单地解决了这个问题。

以上是关于在Windows批处理中的循环中使用变量替换另一个变量中的子字符串的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件中的 Bamboo 变量替换

Windows批处理-for命令详解

如何使用 Windows 命令行环境查找和替换文件中的文本?

如何使用Windows命令行环境查找和替换文件中的文本?

如何从另一个 Windows 批处理脚本调用一个 Windows 批处理脚本并在两者中延迟扩展

如何在环境变量PATH中搜索和替换字符串?