Запуск всех пакетных файлов в папке из другого пакетного файла одновременно - PullRequest
1 голос
/ 28 июля 2011

Получил папку, которая содержит автоматически сгенерированные пакетные сценарии.Например, задание cron запускает скрипт, извлекает все новые строки из базы данных, cURL на мой сервер Windows, записывает пакетный файл в папку с определенным идентификатором.

У меня есть дополнительный пакетный файл, которыйМне нужно запустить все эти командные файлы одновременно, а не последовательно.Причиной этого является то, что в любой момент в папке может быть 100 пакетных сценариев, каждый из которых занимает в среднем 3 минуты, что составляет пять часов, в то время как тестирование показывает, что все 100 работают нормально и занимают всего 5 минут.

Пока у меня есть:

FORFILES /S /P "./batch_files" /M *.bat /C "cmd /c call @file /Q "

, который выполняет циклический просмотр всех файлов, но запускает их только последовательно.Я думал о присвоении каждого имени файла переменной и использовании оператора «&», чтобы оно в основном было

FORFILES /S /P "./batch_files" /M *.bat /C "cmd /c variable = variable+"&"+@fname /Q "
call variable

Но при правильном форматировании пакетного файла (я сосу CMD).

Также я не знаю, будет ли «переменная» глобальной, так как она запускает отдельный экземпляр cmd для каждого файла forfile?

Ответы [ 3 ]

1 голос
/ 28 июля 2011

Вы не можете.Команда START запускает другой процесс и сразу же возвращается для выполнения следующей строки в пакетном файле, ЕСЛИ И ТОЛЬКО ЕСЛИ исполняемый процесс является 32-битным графическим приложением Windows.Если нет, то в случае CMD.EXE START ожидает завершения выполненной команды.

1 голос
/ 10 января 2013

Комбинация приведенных выше ответов должна помочь.

Если вы хотите выполнить поиск содержимого папки batch_files, расположенной в корневой папке, вы получите следующее:

FORFILES /S /P "\batch_files" /M *.bat /C "cmd /C start call @file"
EXIT /B

Это сработало для меня.

1 голос
/ 28 июля 2011

Вместо:

Cmd /C Call @file /Q

использование:

Start Cmd.exe /Q /C @file

Start начинается процесс и возвращается немедленно.

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