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