代码之家  ›  专栏  ›  技术社区  ›  Masa

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

  •  0
  • Masa  · 技术社区  · 6 年前

    假定以下代码将替换 可乐 变量中的子字符串 使用变量的值 在每一次迭代中,它都会失败。有人知道这个代码有什么问题吗?

    @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
    
    0 回复  |  直到 6 年前
        1
  •  2
  •   Masa    6 年前

    经过数小时的搜索,我发现更换线路

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

    到

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

    解决了这个问题。