2016-10-29 2 views
2

Скажем, у меня есть 20 папок с именем folder0 в папку20, и внутри каждой папки у меня есть файл test.bat. Я хочу одновременно запускать все пакетные файлы внутри каждой папки через другой пакетный файл. Если я использую следующий пакетный файл, он будет работать файл Test.bat внутри каждой папки один за другим:запустить пакетный файл в разных папках за один раз

FOR /L %%A IN (0,1,20) DO (
cd folder%%A 
call test.bat 
cd.. 
) 

Но как я буду запускать командные файлы внутри каждой папки паралельно?

+2

Иногда даже эксперты попадают на неправильный трек ;-) Просто замените 'call' на' start' в вашей партии. Вы знаете, что получите 21 окно? – LotPings

ответ

0

Я не думаю, что есть другой способ, чем повторение в списке или использование указателей в качестве части пути, который вы хотите использовать. Нет встроенного способа просто запустить каждый .bat, доступный в папке рекурсивно.

Однако вы можете использовать что-то вроде this принести путь в переменную для цикла, а затем сделать:

call %%X\test.bat 

Пример:

FOR /F %%A IN ('dir /ad /b /s') DO (
echo %%A\test.bat 
call %%A\test.bat 
) 

Echo, что даже увидеть, что запущен, где ,

-1

Возможно:

For /R %%A In (t?st.bat) Do Start "%%~nA" /D"%%~dpA" "%%~A" 

... просто убедитесь, что скрипт запускается из каталога, содержащего ваши двадцать пронумерованных папок.

+0

'for/R' не ищет файловую систему для' test.bat', поскольку между '()' не существует подстановочных знаков, она просто рекурсивно перечисляет все дерево каталогов и добавляет 'test.bat' к каждому элементу; кроме того, OP не хочет искать 'test.bat' рекурсивно, но только на одном уровне каталога; для преодоления всего этого используйте 'for/D %% D in (folder *) do for/F %% F in ('dir/B test.bat'), чтобы начать" "/ D" %% ~ dpF ""% % ~ F ", например ... – aschipfl

Смежные вопросы