バッチファイルとは
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ファイルを引数つきで呼び出します。
Python側に指定した引数が、.cmdの引数として使用できました。