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

use*_*550 4 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...
Run Code Online (Sandbox Code Playgroud)

但是我只得到一个目录的输出,而我有多个目录有.class文件.这似乎没有递归循环.

这是我得到的输出:

第3步......

完整文件位置C:\ NKCV\Project\MyActivities\6_Selenium\htmlTestCasesConve rt2JUnit\iexplore\flow2\testCase_app2.class

文件夹位置C:\ NKCV\Project\MyActivities\6_Selenium\htmlTestCasesConverte d2JUnit\iexplore\flow2

文件名testCase_app2

第3步完成......

缺少参数!

用法htmltestCaseLocation

例如,"C:\ NKCV\Project\MyActivities\6_Selenium\htmlTestCases"

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

谢谢.

Yis*_*hai 14

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

for /R %%i in (*.class) do echo "%%i"
Run Code Online (Sandbox Code Playgroud)

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