我有很多项目(比方说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
但我不确定那种情况下的表现。
答案 0 :(得分:1)
试试这个:
for /d /r "D:\Projects" %%i in (*) do (
pushd "%%~i"
echo(%%i|findstr /r "^.:\\[^\\]*\\[^\\]*$" >nul&&call sonar-runner.bat
popd
)
答案 1 :(得分:0)
这样效率更高。
@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