使用.bat文件以递归方式循环遍历文件夹并获取.class文件

时间:2010-04-19 16:50:41

标签: batch-file

全部,

这就是我想要做的。我有一个.bat文件,它接受一个只是文件夹名称的参数。我先做的是升级(cd ..)。现在在这个目录中我有3个文件夹,每个文件夹都有子文件夹,其中包含.class文件。

我想做的是递归遍历文件夹并获取.class文件。完成后,我想回显.class文件的目标文件夹,并回显the.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”

有谁能告诉我这里有什么问题?

感谢。

1 个答案:

答案 0 :(得分:14)

真的应该使用Ant或Maven来运行JUnit测试,或者以纯JUnit方式执行它并将所有测试组织到套件中并通过JUnit命令行运行套件,但是为了迭代批处理中的所有文件文件,只需使用这样的for命令:

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

只需将呼叫替换为您需要的呼叫即可。请注意,如果路径名中有空格,则需要引用变量。