循环内部的批处理文件字符串替换

时间:2017-09-06 14:46:49

标签: batch-file

我试图将变量设置为另一个变量的值,并删除子字符串。这发生在几个for循环中,我将在下面说明。

setlocal EnableDelayedExpansion
for %%e in (a b c d) do (
    set outerLoop=%%e

    echo Handling !outerLoop!

    dir *_!outerLoop! /S /B >inner-loop-files.txt
    for /F "tokens=*" %%A in (inner-loop-files.txt) do (
        set innerLoopFile=%%A
        set search=_!outerLoop!

        REM Not working!
        REM set replacedFile=!innerLoopFile:search=!

        echo !innerLoopFile!
        echo !replacedFile!
    )
)

我期待这样的输出:

Handling a
C:\Directory\File.ext_a
C:\Directory\File.ext

我知道最里面循环中的标记行很接近,但我无法获得正确的扩展语法。当我这样做时,它适用于单个示例(虽然因为它没有使用变量,所以对其他迭代来说是错误的):

set replacedFile=!innerLoopFile:_a=!

我需要对此表达式做些什么才能使search正确展开?

set replacedFile=!innerLoopFile:search=!

0 个答案:

没有答案