替换FOR循环中的子字符串

时间:2016-11-23 06:51:36

标签: batch-file for-loop cmd substring

我想要特定的String稍后路径,

set PROJECT_FOLDER_PATH=E:\aaa\bbb\cccc
FOR /f %%i IN ('dir /b /s %PROJECT_FOLDER_PATH%\src\*.c') DO echo %%i:bbb\=% 

预期结果:cccc\src\test.c

但当前结果:E:\aaa\bbb\cccc\src\test.c:bbb\=

请帮帮我

1 个答案:

答案 0 :(得分:4)

您不能在%i之类的参数样式变量上使用替换语法。首先使用set将值存储到正常变量。

setlocal EnableDelayedExpansion

set PROJECT_FOLDER_PATH=E:\aaa\bbb\cccc
FOR /f %%i IN ('dir /b /s %PROJECT_FOLDER_PATH%\src\*.c') DO (
    set TMP_PATH=%%i
    echo !TMP_PATH:bbb\=!
)

我们需要Delayed expansion个变量来设置和读取同一循环中的变量。否则,echo命令中的变量将在进入循环之前展开。