我有许多项目(假设是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