Использование подпроцесса для отображения командного окна и получения текста из окна после выполнения команды - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь открыть окно командной строки, а затем, как только команда будет выполнена, преобразовать ее вывод в переменную. Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую приведенную ниже команду, я получаю пустую строку: self.srcEntry.get() и self.dstEntry.get() - исходные и целевые папки для robocopy.

output = Popen(["start", "cmd", "/K", "RoboCopy.exe", f"{self.srcEntry.get()}", f"{self.dstEntry.get()}", "*.*", "/E", "/Z", "/MT:8"], stdout=PIPE, stdin=PIPE, shell=True)
print(output.communicate()[0].decode('utf-8'))

Также программа делает паузу пока командное окно не будет закрыто (у меня нет проблем с этим). Однако, когда я использую:

output = Popen(["RoboCopy.exe", f"{self.srcEntry.get()}", f"{self.dstEntry.get()}", "*.*", "/E", "/Z", "/MT:8"], stdout=PIPE, stdin=PIPE, shell=True)
print(output.communicate()[0].decode('utf-8'))

, я могу получить вывод, но не командное окно. Это проблема, как будто у меня есть большой файл для передачи, и я не буду знать, как далеко он зашёл, пока не закончил.

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