1

我有很多项目(比如说D:\Projects\),每个项目都有自己的目录。在某些目录(不是全部)中有 bat 文件 ( sonar-runner.bat)。我想编写 Windows 批处理脚本来为每个子文件夹顺序运行这个 .bat 文件:

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

但是,使用这种方法,我遇到了执行内部目录中相同文件的问题(例如D:\Projects\Main\Inner\sonar-runner.bat)。我不希望这种情况发生。我只想通过项目文件夹(比如说第一级的子文件夹)查找文件。有人能告诉我我怎样才能做到这一点吗?

编辑 我尝试了另一种方法:

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

但我不确定在这种情况下的表现。

4

2 回答 2

1

尝试这个:

for /d /r "D:\Projects" %%i in (*) do (
    pushd "%%~i"
    echo(%%i|findstr /r "^.:\\[^\\]*\\[^\\]*$" >nul&&call sonar-runner.bat
    popd
)
于 2013-05-28T13:49:17.137 回答
1

这效率更高。

@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
于 2013-05-29T06:40:06.680 回答