使用python代码运行.bat文件

时间:2011-03-29 07:37:20

标签: python batch-file

我尝试使用Python脚本在Windows中运行.bat文件。

ask.bat档案:

Application.exe work.xml

我编写Python代码:

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

输出:当试图运行文件时,它只是眨眼命令提示符,并且工作没有执行。

注意:我也尝试使用备用斜杠,但它无效。

我还想将文件的输出保存在另一个文件中。

任何人都可以建议我如何让脚本可以运行。

9 个答案:

答案 0 :(得分:32)

这已经在SO上得到了详细的回答。看看这个帖子,它应该回答你所有的问题: Executing a subprocess fails

我自己尝试使用此代码:

<强> 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示例。

答案 1 :(得分:24)

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

答案 2 :(得分:4)

将\替换为路径中的/

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

答案 3 :(得分:4)

  1. 最好以这样的方式编写.bat文件,使其运行不依赖于当前工作目录,即我建议将此行放在.bat文件的开头:< / p>

    cd "%~dp0"
    
  2. .bat文件的文件路径用双引号括起来,即:

    os.system('"D:\\x\\so here can be spaces\\otr.bat" ["<arg0>" ["<arg1>" ...]]')
    
  3. 要将某些批处理命令的输出保存在另一个文件中,您可以使用常规的redirection syntax,例如:

    os.system('"...bat" > outputfilename.txt')
    

    或直接在您的.bat文件中:

    Application.exe work.xml > outputfilename.txt
    

答案 4 :(得分:3)

最简单的方法可能是 - &gt;

package b;
public class B {
    int i;
}

class C extends B {
    int i;
    C(int a,int b) {
        super.i=a;
        i=b;
    }
    void show() {
        System.out.println("i in superclass:"+super.i);
        System.out.println("i in subclass:"+i);
    }
}

class UseSuper {
    public static void main(String[] args) {
        C subOb=new C(1,2);
        subOb.show();
    }
}

答案 5 :(得分:1)

python_test.py

import subprocess
a = subprocess.check_output("batch_1.bat")
print a

这使得批处理文件的输出可以在python IDLE /运行控制台上打印。因此,在批处理文件中,您可以在每个步骤中回显结果以调试问题。当批量调用中发生错误时,这对于自动化也很有用,可以轻松地理解和定位错误。(在批处理文件中放置&#34;回显&#34;以避免打印所有内容)

<强> batch_1.bat

echo off    
echo "Hello World" 
md newdir 
echo "made new directory"

答案 6 :(得分:0)

如果您尝试在exe - 文件中调用另一个bat文件。 您必须在SET Path - 您正在呼叫的文件中使用bat。 set Path应指向exe - 文件所在的目录:

set PATH=C:\;C:\DOS     {Sets C:\;C:\DOS as the current search path.} 

答案 7 :(得分:0)

您只是想让它变得原始。问题出在“ \”。在路径之前添加r可以完成工作:)

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

答案 8 :(得分:0)

所以我在Windows 10和Python 3.7.1(经过测试)中这样做:

import subprocess
Quellpfad = r"C:\Users\MeMySelfAndI\Desktop"
Quelldatei = r"\a.bat"
Quelle = Quellpfad + Quelldatei
print(Quelle)
subprocess.call(Quelle)