Используйте файл .bat для рекурсивного цикла по папкам и получения файлов .class - PullRequest
4 голосов
/ 19 апреля 2010

Привет всем,

Это то, что я пытаюсь сделать. У меня есть файл .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 \ htmlTestCasesConve rted2JUnit \ 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"

Может кто-нибудь, пожалуйста, дайте мне знать, что здесь не так?

Спасибо.

1 Ответ

14 голосов
/ 19 апреля 2010

На самом деле, вы должны использовать Ant или Maven для запуска тестов JUnit, или сделать это в чистом виде, как JUnit, и организовать все ваши тесты в Suites и запускать пакет через командную строку JUnit, но для того, чтобы выполнить итерацию всех файлов в пакете file, просто используйте команду for следующим образом:

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

Просто замените эхо звонком, который делает то, что вам нужно. Обратите внимание, что вам нужно заключить переменную в кавычки, если в имени пути есть пробел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...