Pythonのスクリプト(py)もしくはPythonプロンプトから、Windowsのbat(バッチファイル)を実行する方法について説明します。
Windowsのbat(バッチファイル)からPythonのスクリプト(py)を実行する方法ではありません。Pythonのほうが高級なスクリプト言語だから、Pythonからbatを実行しようなんてそんなことないだろうと思いつつ、意外とあるので、そのやり方を書きます。
目次
確認環境
Python 3.8.5 (tags/v3.8.5:580fbb0, Jul 20 2020, 15:57:54) [MSC v.1924 64 bit (AMD64)] on win32
Type “help”, “copyright”, “credits” or “license()” for more information.
>>>
準備するもの
bat(バッチファイル)
今回は簡単なプログラムとして単純に「Hello,bat!」と出力するファイルを用意しました。それを、c:\test配下に格納します。
Pythonスクリプト or コマンド
今回は、Pythonプロンプトから実行してみました。
>>> import subprocess >>> res = subprocess.run(["C:\\test\\hello.bat"], shell=False, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
上記のように、subprocess.run()にコマンドを渡してやればOK。
参考サイト:
subprocess – Subprocess management – Python 3.8.6rc1 documentation
Source code: Lib/subprocess.py The module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older modules and functions: Information about how the module can be used to replace these modules and functions can be found in the following sections.
実行結果
>>> res.returncode 0 >>> res.stdout b'\r\nC:\\Users\\bukidarts\\AppData\\Local\\Programs\\Python\\Python38>echo "Hello,bat!" \r\n"Hello,bat!"\r\n' >>>
こんばんは。
一行目でsyntaxエラーがでるのですがご教示ねがえますでしょうか。
sam様
こんばんは。
当記事はpython2系の頃に書いたものをそのまま引っ越したため、現在は動作しない?ようでした。
(当時の環境が作れない状況です。。)
python3系の環境を構築し、動作確認したので更新します。