Подтвердить что ты не робот

Запустите файл .bat, используя код python.

Я пытаюсь запустить файл .bat в Windows с помощью Python script.

ask.bat файл:

Application.exe work.xml

Я пишу код Python:

import os
os.system("D:\xxx1\xxx2XMLnew\otr.bat ")

Вывод: при попытке запустить файл его просто вызывают мигание командной строки, а работа не выполняется.

Примечание. Я также пытаюсь использовать альтернативную косую черту, но она не работает.

И я также хочу сохранить вывод файла в другом файле.

Может ли кто-нибудь предложить, как я могу запустить script.

4b9b3361

Ответ 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.}