LoginSignup
18
31

More than 5 years have passed since last update.

[Python] Pythonからバッチファイルを起動、変数を渡す。

Last updated at Posted at 2017-02-18

バッチファイルとは

Windowsで実行される一連のコマンド群を記述したファイルです。
バッチファイルには「.bat」と「.cmd」の拡張子の二種類がありますが、動作は基本的に同じです。この違いについて詳しく知りたい方は以下の記事を参照ください。
.cmd(拡張子)とは

なぜこの機能が必要?

単純にバッチコマンドを学習するのがめんどくさかったからです。
Python側で処理してしまって、その結果をバッチファイルの引数として渡すほうが楽でした。
いろんなライブラリ使えますし...(言い訳)

Python側の用意

os.system()関数の引数に、.cmdファイルのパスとコマンドライン引数を記述するだけで、指定した.cmdファイルへ処理を受け渡すことができます。

sys.argvで引数のリストを受け取ることができますが、起動したPythonファイル名がリストの一番初めに含まれるため、これを除外してインデックス1からforループをまわします。

fuga.py
import os
import sys

cmd_file = "hoge.cmd"   # .cmdファイルへのパス
argvs = sys.argv        # 複数の引数を持つ場合
argc = len(argvs)

command = cmd_file

for i in range(1, argc):
    command += " " + argvs[i]

os.system(command)

cmdファイル側の用意

コマンドライン引数をすべて出力するコマンドを記述し、正しい値が取得できているか確認します。

hoge.cmd
@echo off

echo ".cmd Executed"

for %%f in (%*) do (
  echo %%f
)

echo "Completed"

結果

コマンドプロンプトで、先程作成したPythonファイルを引数つきで呼び出します。
2017-02-18_123748.jpg
Python側に指定した引数が、.cmdの引数として使用できました。

18
31
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
31