使用 .bat 文件递归遍历文件夹并获取 .class 文件。

4

大家好,

以下是我想要做的事情。我有一个.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\Project\MyActivities\6_Selenium\htmlTestCasesConverted2JUnit\iexplore\flow2\testCase_app2.class 文件夹位置 C:\NKCV\Project\MyActivities\6_Selenium\htmlTestCasesConverted2JUnit\iexplore\flow2 文件名testCase_app2 步骤3完成... 缺少参数! 使用htmltestCaseLocation 例如, "C:\NKCV\Project\MyActivities\6_Selenium\htmlTestCases"
请问有什么问题吗?
谢谢。
1个回答

14

你应该使用Ant或Maven来运行JUnit测试,或者使用纯JUnit方式将所有测试组织成套件,并通过JUnit命令行运行套件。但是如果要在批处理文件中迭代所有文件,请使用如下命令:

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

只需将echo替换为执行所需操作的调用。请注意,如果路径名中有空格,则需要引用变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接