Windows批处理递归扫描1级子文件夹中的文件



我有许多项目(假设是D:Projects),每个项目都有自己的目录。在一些目录(不是全部)中有bat文件(sonar-runner.bat)。我想写一个windows批处理脚本,按顺序为每个子文件夹运行这个。bat文件:

for /r %%i in (sonar-runner.bat) do (
@call "%%i"
pause
)
pause

然而,使用这种方法,我遇到了在内部目录中执行相同文件的问题(例如D:ProjectsMainInnersonar-runner.bat)。我不希望这种事发生。我只想通过项目文件夹寻找文件(让我们说第一级的子文件夹)。有人能告诉我怎么才能做到吗?

编辑我试过另一种方法:

for /D %%i in (*) do (
for %%j in (%%isonar-runner.bat) do (
    @call "%%j"
    pause
    )
)
pause

但我不确定这种情况下的性能

try this:

for /d /r "D:Projects" %%i in (*) do (
    pushd "%%~i"
    echo(%%i|findstr /r "^.:\[^\]*\[^\]*$" >nul&&call sonar-runner.bat
    popd
)

这样效率更高。

@echo off
pushd "d:folder"
for /f "delims=" %%a in ('dir /ad /b ') do (
pushd "%%a"
if exist "sonar-runner.bat" call "sonar-runner.bat"
popd
)
popd
pause

最新更新