Pythonをバッチスクリプトに変換する超簡単な方法

Windows環境でPythonのスクリプトを作成した時、このPythonスクリプトをバッチスクリプトに変換する方法を紹介していく。

筆者の環境について

  • Windows11 23H2
  • Python 3.10.9

最近のWindows・Pythonであればどのバージョンでも動くと思うので、そこまで気にしなくてよい。

まずは結論から

作成したPythonスクリプトの1行目に以下のコードを追加して、拡張子を.batとして保存すればOK。

@python -x %~f0 %* & goto :EOF

1つ1つの要素について説明していく。

  • @: バッチスクリプトでは実行したコマンドが標準出力で表示されるが、@を先頭に入れることで出力を抑制する。
  • python -x: pythonのスクリプトの一行目を無視する。
  • %~f0: このバッチファイルの絶対パス
  • %*: バッチスクリプトに渡された引数
  • goto :EOF: バッチスクリプト自体を終了する。

つまり、以下のpythonのスクリプトを書いたとする。ファイル名をsample.pyとしよう

import sys

print(sys.argv)

これを以下の様にバッチスクリプトsample.batにすればバッチスクリプトとして同様の動作をしてくれるようになる。

@python -x %~f0 %* & goto :EOF
import sys

print(sys.argv)

この手順で作成したバッチスクリプトを適当なディレクトリに集めてPATHを通しておけば、sampleというコマンドで実行ができるようになる。

参考文献