2010-04-19 55 views
4

大家好保持,使用.bat文件通過文件夾和遞歸循環得到的.class文件

這就是我想要做的事。我有一個.bat文件,它接受一個只是文件夾名稱的參數。我首先要做的是上一層(cd ..)。現在在這個目錄中,我有3個文件夾,每個文件夾都有子文件夾,並在其中有.class文件。

我想要做的是循環遍歷文件夾並獲取.class文件。一旦完成,我想要回顯.class文件的目標文件夾以及回顯該.class文件的名稱。

因此c:\ temp \ potter \ myclass.class。我會迴應c:\ temp \ potter \和myclass。

我可以通過編寫一個單獨的bat文件來實現這一點。但是當我將它與遞歸函數整合時,它似乎打破了。

這是我在做什麼:

:: call the junit classes... and save the results 

echo step 3... 

cd %1 

cd .. 

for /r %%a in (*.class) do set Var=%%a 

echo Full file location %Var% 

for %%i in ("%Var%") do Set CF=%%~dpi 

Set CF=%CF:~0,-1% 

:LOOP 

If "%CF:~-1,1%"=="\" GoTo :DONE 

Set CF=%CF:~0,-1% 

GoTo :LOOP 

:DONE 

Set CF=%CF:~0,-1% 

echo Folder Location %CF% 

::cd %CF% 

For %%j in ("%Var%") Do Set name=%%~nxj 

:: -6 because of Quotations 

Set name=%name:~0,-6% 

echo File Name %name% 

echo step 3 complete... 

但是我只得到一個目錄的輸出,雖然我有.class文件的多個目錄。這似乎沒有遞歸循環。

這是輸出我得到:

第3步......

全部文件位置 C:\ NKCV \項目\ MyActivities \ 6_Selenium \ htmlTestCasesConve rted2JUnit \ IEXPLORE \流2 \ testCase_app2的.class

文件夾位置 C:\ NKCV \項目\ MyActivities \ 6_Selenium \ htmlTestCasesConverte d2JUnit \ IEXPLORE \流2

文件名testCase_app2

第3步完成...

缺少!

使用htmltestCaseLocation

爲如 「C:\ NKCV \項目\ MyActivities \ 6_Selenium \ htmlTestCases」。

任何人都可以請讓我知道什麼是錯在這裏?

謝謝。

回答

14

真的,您應該使用Ant或Maven來運行JUnit測試,或者使用純JUnit方法並將所有測試組織到Suites中,並通過JUnit命令行運行該套件,但爲了迭代所有文件批處理文件,只需使用for命令,如下所示:

for /R %%i in (*.class) do echo "%%i" 

只需將呼叫替換爲您需要的某個呼叫即可。請注意,如果路徑名稱中有空格,則需要引用該變量。

相關問題