概要
Windowsのバッチファイルから外部のスクリプトを呼ぶ実験です。
Linux のコマンドの方が慣れているのですが、
職場のPCがWindowsなのでバッチファイルも慣れておきたい。
外部のスクリプトは何でもいいですが、pythonにしました。
環境
- Windows 10
- python 3.6.0
やったこと
バッチファイルから渡した引数を、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