#python #windows #cmd
#питон #Windows #cmd
Вопрос:
Как я могу в Python проверить и закрыть такие окна cmd, как на картинке? Этот код должен контролировать и определять, какой cmd завершен и простаивает, как на картинке, затем закройте его. Мне не нужен код, который ждет, чтобы закрыть его. Это должна быть отдельная программа. Кстати, изображение является образцом. Это не моя изначальная проблема.
Вы можете подумать, что у вас открыто окно или несколько окон, ожидающих вот так, как их можно закрыть? Существует условие для закрытия командной строки. Это условие заключается в том, что программа в этом приглашении должна быть выполнена. Командные строки, в которых выполняется программа, не должны быть закрыты. Более того, эта программа должна вмешиваться извне и впоследствии.
Я не могу решить проблему с помощью taskkill или psutil. Они всегда видят состояние cmd как запущенное. Более конкретно, вы можете посмотреть фрагмент кода ниже,
os.system("start /B start cmd.exe @cmd /k python helloworld.py amp; exit")
Он не закрывает командную строку.
Комментарии:
1. перетащите файл python в командную строку, после чего он покажет ваши выходные данные. после этого введите
exit
илиexit()
, чтобы закрыть cmd2. Почему вы используете оба
start
иcmd
дважды??cmd /C python helloworld.py
(илиstart "" /B cmd /C python helloworld.py
) должно быть достаточно…3. @aschipfl Я использую его таким образом, потому что таким образом он может запускаться извне в приглашении, и программа не ожидает выполнения приглашения. В противном случае программа ожидает выполнения запроса и закрывает его, чего я не хочу.
4. Простое решение вообще не используется
os.system()
, поскольку используемый код приводит к выполнению%ComSpec% /c start /B start cmd.exe @cmd /k python helloworld.py amp; exit
, что означает запускcmd.exe
, чтобы использовать его внутреннюю командуstart
для запуска еще одного командного процесса, чтобы использовать внутреннюю командуstart
для запуска еще одного командного процесса для запускаpython.exe
для обработки скрипта Python.amp; exit
в конце этой командной строки интерпретируется командой firstcmd.exe
started byos.system
as для выполнения после firststart
. Весь подход не имеет смысла.5. Второй процесс cmd запускается с помощью командной строки
C:WindowsSystem32cmd.exe /K start cmd.exe @cmd /k python helloworld.py
, которая продолжает выполняться до тех пор, пока пользователь не введетexit
опцию/K
. Третий командный процесс запускается с помощью командной строкиcmd.exe @cmd /k python helloworld.py
, что приводит к запускуpython.exe
сhelloworld.py
аргументом as и продолжает выполняться послеpython.exe
завершения самого себя из-за опции/k
. Таким образом, пользователь должен ввестиexit
, чтобы закрыть третьеcmd.exe
, в то время как первоеcmd.exe
закрылось само по себе уже после запуска второгоcmd.exe
, потому что…
Ответ №1:
Я не знаю, ищете ли вы это решение, но вы можете добавить «amp; exit» после вашего скрипта, и это закроет CMD.
Например:
python script.py amp; exit