【发布时间】:2016-08-25 10:42:02
【问题描述】:
我创建了一个 Python 脚本,它需要根据某些条件启动 .bat 文件。
Python 脚本位置:\Component\myScript.py
批处理文件位置:\Component\MS20160825\toExecute.bat
批处理文件内部使用了一些位于 \Component\bin\ 中的可执行文件
我该怎么做:
从 Python 脚本启动 .BAT 文件,以便 .BAT 成功执行。 BAT 文件应该能够在 \Component\bin\ 目录中找到可执行文件来执行其任务并产生所需的结果。
保持 Python 脚本执行,直到 .BAT 完成执行。
.BAT 文件有 pause >nul 语句。我需要绕过它,这意味着当从 Python 脚本执行 .BAT 时,它不应该等待用户按 Enter 而是应该在执行倒数第二个语句后正常终止。因为同一个.BAT文件需要执行多次。
【问题讨论】:
-
使用
NoPause之类的参数从Python 脚本运行批处理文件,并在批处理文件if /I not "%~1" == "NoPause" pause >nul中使用。在命令提示符窗口call /?中运行以获取有关如何使用批处理文件参数的帮助。%0引用参数 0,即批处理文件本身。%~dp0是例如以反斜杠结尾的批处理文件的驱动器和路径。这可能有助于从批处理文件中使用相对于批处理文件路径的路径引用其他文件夹/文件。 -
关于相对路径:以
\Component\myScript.py之类的反斜杠开头的路径相对于当前驱动器的根目录。以..\开头的路径引用当前目录的父目录。并且以.\开头或以文件夹或文件名开头的路径是相对于当前目录的。 -
是的,这是一个打字错误。感谢 Mofi 指出。
标签: python batch-file subprocess call popen