Запустите файл .bat, используя код python.
Я пытаюсь запустить файл .bat
в Windows с помощью Python script.
ask.bat
файл:
Application.exe work.xml
Я пишу код Python:
import os
os.system("D:\xxx1\xxx2XMLnew\otr.bat ")
Вывод: при попытке запустить файл его просто вызывают мигание командной строки, а работа не выполняется.
Примечание. Я также пытаюсь использовать альтернативную косую черту, но она не работает.
И я также хочу сохранить вывод файла в другом файле.
Может ли кто-нибудь предложить, как я могу запустить script.
Ответы
Ответ 1
Об этом подробно сказано в SO. Проверьте эту тему, он должен ответить на все ваши вопросы:
Сбой выполнения подпроцесса
Я сам пробовал этот код:
batchtest.py
from subprocess import Popen
p = Popen("batch.bat", cwd=r"C:\Path\to\batchfolder")
stdout, stderr = p.communicate()
batch.bat
echo Hello World!
pause
У меня есть пример batchtest.py из вышеупомянутого потока.
Ответ 2
import subprocess
filepath="D:/path/to/batch/myBatch.bat"
p = subprocess.Popen(filepath, shell=True, stdout = subprocess.PIPE)
stdout, stderr = p.communicate()
print p.returncode # is 0 if success
Ответ 3
Замените\на/в пути
import os
os.system("D:/xxx1/xxx2XMLnew/otr.bat ")
Ответ 4
-
Лучше написать файл .bat
таким образом, чтобы его запуск не зависел от текущего рабочего каталога, то есть я рекомендую поместить эту строку в начало файла .bat
:
cd "%~dp0"
-
Закрепить путь к файлу .bat
в двойных кавычках, то есть:
os.system('"D:\\x\\so here can be spaces\\otr.bat" ["<arg0>" ["<arg1>" ...]]')
-
Чтобы сохранить вывод какой-либо командной команды в другом файле, вы можете использовать обычный синтаксис перенаправления, например:
os.system('"...bat" > outputfilename.txt')
Или непосредственно в файле .bat
:
Application.exe work.xml > outputfilename.txt
Ответ 5
Вероятно, самый простой способ сделать это →
import os
os.chdir("X:\Enter location of .bat file")
os.startfile("ask.bat")
Ответ 6
Если вы пытаетесь вызвать другой файл exe
внутри bat
файла.
Вы должны использовать SET Path
внутри bat
файла, который вы вызываете.
set Path должен указывать на каталог, в котором находится exe
файл:
set PATH=C:\;C:\DOS {Sets C:\;C:\DOS as the current search path.}