[Python] Pythonからバッチファイルを起動、変数を渡す。
バッチファイルとは
Windowsで実行される一連のコマンド群を記述したファイルです。
バッチファイルには「.bat」と「.cmd」の拡張子の二種類がありますが、動作は基本的に同じです。この違いについて詳しく知りたい方は以下の記事を参照ください。
.cmd(拡張子)とは
なぜこの機能が必要?
単純にバッチコマンドを学習するのがめんどくさかったからです。
Python側で処理してしまって、その結果をバッチファイルの引数として渡すほうが楽でした。
いろんなライブラリ使えますし...(言い訳)
Python側の用意
os.system()関数の引数に、.cmdファイルのパスとコマンドライン引数を記述するだけで、指定した.cmdファイルへ処理を受け渡すことができます。
sys.argvで引数のリストを受け取ることができますが、起動したPythonファイル名がリストの一番初めに含まれるため、これを除外してインデックス1からforループをまわします。
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ファイル側の用意
コマンドライン引数をすべて出力するコマンドを記述し、正しい値が取得できているか確認します。
@echo off
echo ".cmd Executed"
for %%f in (%*) do (
echo %%f
)
echo "Completed"
結果
コマンドプロンプトで、先程作成したPythonファイルを引数つきで呼び出します。
Python側に指定した引数が、.cmdの引数として使用できました。
Author And Source
この問題について([Python] Pythonからバッチファイルを起動、変数を渡す。), 我々は、より多くの情報をここで見つけました https://qiita.com/kodai100/items/f953e92d78f4ae345ee6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .