2010-04-19 50 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" 

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

相关问题