在Python中调用批处理文件不能正确执行

时间:2017-11-08 19:19:29

标签: windows python-3.x batch-file cmd pycharm

这是我的第一篇文章,我非常认真地使用Python进行编码。 我的目的是调用批处理文件以在Python脚本中执行。

我已经完成了对研究的尽职调查,并发现了 call()方法与库:(来自子进程导入调用),和 os.system()方法与库:( import os)

以下是一些细节:

1.当我手动运行批处理脚本时,它按预期执行每行代码。

2.当我使用上述两种方法之一从Python调用批处理脚本时,部分批处理文件将执行。

以下是批处理脚本中的代码:

@ECHO OFF
ECHO "test" >> file.txt
PAUSE

以下是使用os.system()方法的Python脚本的代码

import os

runfile = "C:\\Data\\Automation\\Test\\run.bat"
os.system(runfile)
print("Hello World")

现在,当我手动运行批处理脚本时,文件会按预期写入我的驱动器(file.txt)。

但是当我运行Python脚本时,批处理文件中的所有代码都会被执行,除了" ECHO" test" >> file.txt的"

真正有趣的是在PyCharm中,批处理文件输出出现在我的状态窗口中!它就像批处理文件中的代码以某种方式集成在Python内部。它不仅会出现,而且还可以与它互动!

所以这是所有步骤:

1.运行Python脚本

2.调用BatchScript

3.问题:file.txt没有写入磁盘

4.输出'按任意键继续。 。 "在Python状态窗口中

5.按Enter

(返回完成执行剩余的Python代码)

6.输出" Hello World"在Python状态窗口中

正如您所看到的,问题是: 手动执行批处理脚本会导致写入file.txt 执行python脚本时不会将file.txt写入磁盘

我希望这是一些可靠的细节,以帮助确定问题所在。

非常感谢您帮助解决这个问题,非常感谢您的所有时间和精力! =)

1 个答案:

答案 0 :(得分:0)

我想知道Python脚本启动.bat脚本时当前的工作目录是什么。指定应在与.bat文件脚本相同的目录中创建<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div id="forumHeader">Forum Header</div> <div id="content">Some content here</div>,或指定另一个目录的完整路径。

file.txt

@ECHO OFF
ECHO "test" >>"%~dp0file.txt"
PAUSE