Кто-нибудь знает, есть ли cmd-скрипт, который делает это и / или инструмент командной строки, готовый к работе?
14
Кто-нибудь знает, есть ли cmd-скрипт, который делает это и / или инструмент командной строки, готовый к работе?
Ответы:
Создайте три пакетных файла ниже. Main.bat запускает 1.bat и 2.bat
1.bat и 2.bat записывают временные файлы, которые проверяет main.bat. Пока 1.bat и 2.bat работают, main.bat сообщает, что обработка все еще происходит. Когда вы нажимаете ввод в открытом окне 1.bat или 2.bat, временный файл удаляется, и программа завершает работу. Это имитирует остановку обработки для этого файла .bat. Если вы сделаете это для 1 и 2.bat, main.bat сообщит вам, что обработка для этих процессов завершена. Вы можете заставить 1.bat и 2.bat делать все, что захотите, при условии, что вы очистите временный файл, когда закончите. На этом этапе main.bat также может делать все, что вы хотите.
1.bat
2.bat
main.bat
источник
Достаточно просто, если процессы не требуют стандартного ввода или вывода. Из командной строки или в командном файле:
Это запустит все четыре процесса одновременно и не вернется, пока все они не завершатся. (Возможное исключение: если процесс явно закрывает стандартный вывод, он может быть обработан, как если бы он вышел. Но это необычно, очень немногие процессы делают это.)
Я не уверен, сколько именно процессов вы можете запустить одновременно таким образом. Я пробовал до десяти.
источник
Единственный способ сделать это - запустить отдельные командные файлы (см.
start /?
), Которые запускают отдельную задачу, и написать текстовый файл по завершении. Затем вы периодически проверяете, были ли созданы текстовые файлы.источник
Вы можете посмотреть командлет Powershell Start-Job. Это должно позволить вам сделать это. Подробнее здесь Powershell - это предпочтительная оболочка Microsoft. Это намного мощнее, чем сценарии cmd и хорошо тратит ваше время
источник
Или вы можете использовать это: http://www.out-web.net/?p=167
Я сделал это, это работает, однако иногда случается, что PID завершенного процесса немедленно повторно используется другим процессором Windows, который только что запустился, и это делает обнаружение конца вашего процесса опасным / ошибочным.
источник
Я тоже искал похожую задачу. Цель состояла в том, чтобы запустить несколько команд параллельно и извлечь вывод (stdout & error) всех параллельных процессов. Затем дождитесь завершения всех параллельных процессов и выполните другую команду. Ниже приведен пример кода для файла BAT, который может быть выполнен в CMD:
( start "" /B cmd /c ping localhost -n 6 ^>nul timeout /t 5 /nobreak start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1 start "" /B cmd /c ping localhost -n 11 ^>nul timeout /t 10 /nobreak ) | pause Echo waited timeout /t 12 /nobreak
()
Сначала выполняются все операторы внутри , ждите их завершения, затем выполняются две последние строки. Все команды, начинающиеся сstart
, выполняются одновременно.Эти ссылки полезны: /programming//a/43762349/9689416 и https://ss64.com/nt/start.html.
источник