Help us understand the problem. What is going on with this article?

バッチファイルからPythonスクリプトを実行

More than 3 years have passed since last update.

概要

バッチファイルからPythonのスクリプトを実行する。
メインの処理はPythonスクリプトで行う。
バッチではファイルかフォルダを受け取り、Pythonのスクリプトに渡す。

準備

runBatPyフォルダ
┣・runPythonScript.bat
┗・PythonScript.py
PythonScript.pyは実行するrunPythonScript.batと同じ場所に置きます。

サンプルコード:runPythonScript.bat

cd /d %~dp0
C:\Python27\python.exe PythonScript.py %*
cd
pause

ファイルなどを受け取ってそれらのパスをPythonScriptに渡します。
何も投げない場合もエラーが出たりはしません。

cd /d %~dp0

カレントディレクトリを実行したバッチファイルのディレクトリにする。

C:\Python27\python.exe PythonScript.py %*

左から順番に

  • C:\Python27\python.exe
    環境変数がを設定してない、変更したくないという事もあると思うので直接通します。

  • PythonScript.py
    pythonで実行したいスクリプトファイル

  • %*
    runPythonScript.batにドラッグ&ドロップされたファイルやフォルダのパスの全てをこれで見れる。
    それをPythonScript.pyに渡している。
    %*以外にも受け取ったものは%1~%9で見れるがこの方法は9つまでしか見れない。

複数の変数をPythonScriptに渡したい

C:\Python27\python.exe PythonScript.py %* %IN%
これで%IN%の値も一緒にPythonScript.pyに渡される。

サンプルコード:PythonScript.py

import sys
if __name__ == "__main__":
 param = sys.argv
 for p in param:
  print p

if __name__ == "__main__":

スクリプトファイルとして実行された時にのみif文の中を処理する。

sys.argv

argv[0] はスクリプトの名前
それ以降が %*で渡されたパスが入っている。
Python 27のリファレンスから引用

Pythonスクリプトに渡されたコマンドライン引数のリスト。
argv[0] はスクリプトの名前となりますが、フルパス名かどうかは、OSによって異なります。
コマンドライン引数に -c を付けて Pythonを起動した場合、 argv[0] は文字列 '-c' となります。
スクリプト名なしでPythonを起動した場合、 argv[0] は空文字列になります。
標準入力もしくはコマンドライン引数で指定されたファイルのリストに渡ってループするには、 fileinput モジュールを参照してください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away