50
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-04-25

概要

バッチファイルから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 モジュールを参照してください。

50
74
0

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
50
74

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?