以下嵌套的for循环使我发疯(在Windows 7上):

@echo off
SetLocal EnableDelayedExpansion

set TESTDIRS=fast mid slow
set TD=src\test\resources\testsuite

for %%d in (%TESTDIRS%) do (
    set CTD=%TD%\%%d
    echo CTD: !CTD!
        REM Echos the expected path
    echo CTD: %CTD%
        REM Echos nothing -- understandable

    for /R !CTD! %%f in (*.fs) do (echo %%f)
        REM Echos nothing -- why?
    for /R src\test\resources\testsuite\fast %%f in (*.fs) do (echo %%f)
        REM Echos expected files
)

我尝试了各种解决方案,包括禁用DelayedExpansion,调用语句和其他功能,但是我从未使内部循环起作用。我知道我可以通过子例程调用来替换内部循环,但是必须有一种方法可以使它与嵌套循环一起使用。

最佳答案

如果您使用pushd !CTD!popd,并且让FOR /R默认使用当前目录怎么办?

07-24 09:47