在 FOR 循环中替换子字符串

Par*_*.BJ 2 for-loop cmd substring batch-file

我想要特定的字符串后路径,

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

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

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

请帮我

Mel*_*ius 5

您不能在像%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\=!
)
Run Code Online (Sandbox Code Playgroud)

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