ishii-akihiro’s blog

いろいろ試したことやバグ対応の作業履歴を残していきます。

バッチファイルからpythonスクリプトを呼ぶ

概要

Windowsのバッチファイルから外部のスクリプトを呼ぶ実験です。
Linux のコマンドの方が慣れているのですが、
職場のPCがWindowsなのでバッチファイルも慣れておきたい。
外部のスクリプトは何でもいいですが、pythonにしました。

環境

やったこと

バッチファイルから渡した引数を、pythonスクリプトで表示してみました。

1. バッチファイル(test.cmd)を作成

@echo off
cd /d %~dp0

rem pythonに渡す値の設定
set out1=hello
set out2=world

rem pythonスクリプト実行(out1, out2 を引数に指定)
python getArgs.py %out1% %out2%

最終行で変数を%で囲まないと、
"hello"と"world"ではなく、"out1"と"out2"が渡ってしまいます。

2. 呼び出すpythonスクリプトファイル(getArgs.py)を作成

import sys

# test.cmdから渡された引数を格納したリストの取得
argvs = sys.argv

# 引数を1つずつ表示
for i in range(len(argvs)):
    print('argv[' + str(i) + ']:' + argvs[i])

3. まず、pythonスクリプトの動作を確認

コマンドプロンプトで実行するコマンドはこちら。

>python getArgs.py 引数その1 引数その2

実行結果がこちら。

argv[0]:getArgs.py
argv[1]:引数その1
argv[2]:引数その2

引数が正しく出力されました。
argv[0]には実行したファイル名が格納されるようですね。

4. バッチファイルを実行

コマンドプロンプトで実行するコマンドはこちら。

>test.cmd

実行結果がこちら。

argv[0]:getArgs.py
argv[1]:hello
argv[2]:world

test.cmdのソース内で指定した変数(out1, out2)が
ちゃんとpythonスクリプトに渡っているようです。

まとめ

最低限のコードで試したので実用性が1ミリもありませんが、
バッチファイルから外部スクリプトファイルを呼ぶことはできました。

今回はバッチファイル内で引数を設定しましたが、
フォルダ内のファイルパスも渡せるようです。 qiita.com