Итак, вот моя ситуация: я вызываю .bat-файл из сценария python. Я не уверен, что это важно, но я запускаю файл с подпроцессом модуля python. то есть создание файлаВыполнение ряда команд несинхронно из .bat-файла
subprocess.call("dir/file.bat", shell=True)
.bat зависит от ввода данных пользователя во время выполнения сценария питона, но в целом он будет содержать ~ 30-40 строк команд для запуска в ЦМДЕ. Все эти строки кода являются точными, за исключением входных и выходных файлов для команды. Например:
start /wait metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
start /wait metamap13 -Aq pradaxaText2.txt pradaxa2.out.txt
start /wait metamap13 -Aq pradaxaText3.txt pradaxa3.out.txt
Если я вызываю metamap13 40 раз одновременно, мой компьютер будет крах, потому что это так много памяти. Как вы видите, я пробовал комбо, чтобы первая строка закончилась до начала второго.
start /wait
0 коммент. К сожалению, когда файл .bat запущен, он открывает новое окно, и как только программа закончена, окно НЕ закрывается, и поэтому вторая строка не начинается, пока я вручную не закрою новое окно cmd. Огромный объем данных, которые будут обработаны с помощью этого метода, означает, что я не всегда могу быть доступен, чтобы закрыть сотни новых окон. Я также попытался следующие:
start /wait /B metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt
Я думал/B устранит проблему с того, чтобы закрыть окно, но он по-прежнему запускает все 40 строк кода одновременно. Я думаю, что это связано с тем, что вызов metamap13 считается завершенной командой, поэтому он переходит к следующей строке, хотя метамап на самом деле все еще запущен. Поэтому я подумал о двух возможных решениях, которые я не могу понять, как реализовать:
- Автоматизация закрытия новых окон cmd после завершения работы metamap13.
- Выполнение следующей строки выполняется только после завершения metamap13.
Любые мысли были бы весьма признательны!
является metamap13 ЕХ? Вы пытались запустить что-то вроде 'start/wait 'metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt " ' – PsychoData
http://ss64.com/nt/start.html также говорит, что вы должны предоставить заголовок или на наименьшее значение '' '' для пустого. Он также предлагает образцы в форме «START» «/ wait [options]« C: \ Program.exe »« -a ParametersInfo »' – PsychoData
вы могли бы попытаться заменить свои команды запуска на 'cmd/C metamap13 -Aq pradaxaText1.txt pradaxa1.out.txt' –