2013-05-28 57 views
0

我有很多項目(比如D:\Projects\),每個項目都有自己的目錄。在一些目錄(不是全部)中有bat文件(sonar-runner.bat)。我想編寫Windows批處理腳本sequentialy每個子文件夾運行此.bat文件:windows批處理遞歸掃描1級子文件夾中的文件

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 

,但我不肯定在這種情況下的性能。

回答

1

試試這個:

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

actualy我還沒有嘗試過,但它看起來不錯,我用我自己的例子(編輯後) – seeker

+0

我做編輯,添加'findstr'執行蝙蝠只有一個子文件夾級別。 – Endoro

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 
相關問題