pythonなどの実行支援ツール zScripter について

T. Yoshiizumi

2021/03/06

更新情報

 若干ですが、次のような改良を加えました(2021/03/06)。

a. zCommandLineのデスクトップへの登録

 コマンドプロンプトで `zScripter.vbs // [enter]’ を実行すると、
zCommandLine がデスクトップに登録されます。

 その zCommandLineをクリックすれば、コマンドプロンプトが開きます。

 すでにデスクトップに zCommandLine が登録されている状態で
同じように ‘//’ を実行すると今度は zCommandLine が消去されます。

 なお、zScripter.vbs を引数なしで起動してから、
‘//’ の2文字を入力しても同じ働きをします。

b. 引数に ‘/’, ‘!’ を指定可能に

 zScripter.vbs を引数なしで起動してから
‘/’ 1文字を入力してエンターキーを押すと
zScripterが送るメニューに登録されたり、あるいは消去されたりします。

 また、‘/’ の代わりに ‘!’ を入力すれば
コマンドプロンプトが開きます。

 この ‘/’, ‘!’ を引数として与えることにより
同じ働きをするようにしました。

zScripter.vbs /  [enter]
zScripter.vbs !  [enter]

 上のように実行できます。

c. 統計解析ソフトRのオプションを変更

 Rのオプションを --vanilla の代わりに --no-save にしました。

 --vanilla だと Rの起動時に
.RData とか Rprofile.site が読み込まれません。

 それだと不便なことがあるので --no-save に変更しました。

 なお、このオプション指定は zScripter.vbs の14行目

rOption = "--no-save --internet2"

 上の行を書き換えることにより変更できます。

[目次へ]

1. zScripter の目的

 MS-Windows上で python(WinPython), 統計ソフトR, ruby, LaTeX(w32tex)の利用を容易にするのが zScripter の目的です。

 それぞれ64bitコマンドの実行を前提にしていますが、
32bitに対応する方法もあります。

a. Explorer上でスクリプト実行

 pythonスクリプトの test.py が既に用意されているとき、
Explorer上でその test.py に焦点を当てた状態で
送るメニューから zScripter を呼び出すとそのスクリプトが実行されます。

 コマンドプロンプトのウィンドウ(DOS窓)を開いて
python test.py [enter] のように入力する必要はありません。

 標準出力と標準エラー出力は、zOut.txt に書き出されます。

 使い慣れたエディタで読むことができ、デバッグ作業が容易になります。

b. USBメモリーなどに入れて携帯可能

 python, R, ruby, w32tex をUSBメモリーに入れておいて
常用のパソコン以外でも簡単に使い始めることができます。

 それぞれのソフトウェアを動かすのに必要な環境変数は
zScripter がドライブとフォルダをチェックしたうえで設定します。
ユーザーが設定する必要はありません。

 なお、python, R, ruby, w32tex の全部を用意しなくても
必要なものだけ用意すれば大丈夫です。

[目次へ]

2. とりあえず使ってみる

 前提として zScripter.zipをダウンロードして、適当なフォルダに展開しておきます。

 zScripter.dat, zScripter.vbs, test(フォルダ)が出てくるはずです。

(1) WinPython の展開

 USBメモリーのドライブが仮に F: だとしましょう。

 ドライブのルートディレクトリに z というフォルダを作成します。

 F:\z を設けるわけです。

 この z の下に WinPython を展開します。

 たとえば Winpython64-3.7.6.0.exe を展開した場合
WPy64-3760 のようなフォルダがさくせいされて
その下にpython関連ファイル一式が設けられます。

 それから、zScripter.dat, zScripter.vbs の二つのファイルを
同じく F:\z の下にコピーします。

(2) 送るメニューへの zScripter の登録

 F:\z\zScripter.vbs を実行します。

 すると「コマンド入力」の場面になるので
半角のスラッシュ記号1文字だけを入力してエンターキーを押します。

 これで zScripter が送るメニューに登録されます。

(3) test01.py の実行

 zScripter.zip を展開して出てきた test というフォルダの下に
test01.py があります。

 Explorer上でこの test01.py に焦点を当てた状態で
送るメニューから zScripter を選択してみてください。

 少し待つと、同じフォルダの下に zOut.txt が書き出されます。

 そこには これは python のテストです. という1行が書かれているはずです。

 また、zShell.txt というファイルも書き出されます。

 こちらには実行されたコマンドラインが書かれています。

 以上が「とりあえず使ってみる」の方法です。

[目次へ]

3. 4つのソフトウェアの置き場所

 「とりあえず使ってみる」では F:\z をソフトウェアの置き場所にしました。

 z という名前は、別のものでもかまいません。

 説明の便宜上、以下では F:\z をソフトウェアの置き場所にします。

 この置き場所には zScripter.dat, zScripter.vbs および
WinPython, R, ruby, w32tex の4つのソフトウェアを置きます。

(1) 4つのソフトウェアのフォルダ名の例

 私のところの例を示すと次のフォルダが置かれています。

 バージョンによってフォルダ名が違ってきますが、それでかまいません。

 フォルダ名の先頭が WPy, R-, ruby, w32tex のものを探して
あれば、これらソフトウェアの環境変数を設定してから該当のコマンドを実行します。

 なければ、当然ながら環境変数を設定しません。

 4つのソフトウェアのうち、必要なものだけ用意するということで大丈夫です。

 なお、フォルダ名の先頭が WPy のものが複数ある場合は、
そのうちの一つが選択されますが、どれが選択されるかは不定です。

 該当のフォルダは、それぞれ一つずつにしておくのが無難です。

(2) インストール済みのコマンドを動かしたい場合

 すでに python がインストール済みで PATHが通っているのであれば、
WinPythonを F:\z に展開する必要はありません。

 また、F:\z にWinPythonが展開されているけれども、それを使わずに
インストール済みの別のpythonを動かしたいときは、
WPy64-3760 というフォルダ名を _WPy64-3760 などに変更します。

 そうすれば zScripter がWinPython関連の環境変数を設定することはありません。

 それでも、「とりあえず使ってみる」でやったように
Explorer上で test01.pyを実行することは可能です。

 拡張子が .py であれば、pythonでそれを実行するよう試みます。

 R, ruby, w32tex についても同様です。

[目次へ]

4. zScripterのコマンド入力

 F:\z\zScripter.vbs を実行すると「コマンド入力」の場面になります。

 そこで入力できるものを以下に記します。

(1) 送るメニューの登録と解除

 コマンド入力の場面で、半角のスラッシュ記号 ‘/’ を1文字だけ入力しエンターキーを押した場合、zScripter が送るメニューに登録されます。

 すでに登録されているときは、送るメニューから zScripter が消去されます。

 つまりトグル式になっています。

 「登録」とは、具体的にいうと zScripter.vbs のショートカットファイルを
SendTo(スペシャルフォルダ)の下に作成します。

 「解除」は、そのショートカットファイルを削除します。

(2) コマンドプロンプトのウィンドウを開く

 コマンド入力の場面で、半角の感嘆符記号 ‘!’ を1文字だけ入力しエンターキーを押した場合、コマンドプロンプトのウィンドウ(DOS窓)が開きます。

 カレントディレクトリは F:\z になっています。

 4つのソフトウェアの環境変数が設定された状態なので
python test01.py [enter] のように入力してスクリプトを実行できます。

 exit [enter] を入力すればコマンドプロンプトのウィンドウが閉じます。

(3) コマンドの入力

 入力場面で python --version を入力すると
結果が zOut.txt に書き出されます。

 その中身をみれば python のバージョンがわかります。

 python -m pip list を入力すれば
インストール済みのpythonのライブラリの一覧が得られます。

 gem list なら ruby のライブラリ一覧を得られます。

 4つのソフトウェアと関係ないコマンドでもかまいません。

 copy /? とすれば、copyの使い方が zOut.txt に書き出されます。

 標準出力と標準エラー出力は必ず zOut.txt に書き出されます。

 それが嫌なときは、前述したように ‘!’ を入力して
コマンドプロンプトの状態からコマンドを実行してください。

[目次へ]

5. Explorer上でのスクリプトファイルなどの指定

 Explorer上で test01.py などのスクリプトファイルに焦点を当てて
送るメニューから zScripter を選択すると
python test01.py が実行されるわけですが、
どの拡張子がどのコマンドで処理されるのかを記します。

 また、スクリプトファイル以外のファイルを引き渡すこともできるので
その辺の説明も記します。

(1) スクリプトファイルの拡張子

 拡張子が .py だと python が実行されます。

 .R なら R、.rb だと ruby、.tex の場合はtexのコマンドが実行されます。

 以下に拡張子とコマンドの対応を掲げておきます。

 ptex2pdf は、LaTeX文書からpdfファイルを作成する簡易コマンドです。

 統計ソフトRの場合、Rcmd.exe, Rscript.exe のどちらかが実行されます。

 Explorer上で test02b.R と test02b_argument.txt の二つを選択してから
送るメニューで zScripter を選ぶと、
Rscript.exe test02.R test02_argument.txt が実行されます。

 test02.R だけを選択したときは Rcmd.exe の方が実行されます。

 ややこしくてすみません。Rcmd.exe のログ記録機能が私には魅力的なので
こういう仕様にしました。

(2) 複数のファイルを選択した場合の挙動

 zScripterは、引き渡されたファイルの拡張子をみて
スクリプトか否かを判定します。

 スクリプトではないファイルは、pythonなどの該当のコマンドに対して
スクリプトの後ろに引数として引き渡します。

 Explorer上で data.csv, test.py の二つを選択した場合
python test.py data.csv が実行されます。

 スクリプトでないファイルが複数選択されたときは、
それらを Sort した順番で引き渡します。VBScriptの Sort を使います。

 困るのは、スクリプトファイルが複数渡されたときです。

 test.py, test.rb の二つを引き渡すと、
python, ruby のどちらが実行されるかは不定です。

 そうした状況になることは避けるのが無難です。

[目次へ]

6. zOut.txt の書き出しを抑制する

 Explorer上でスクリプトファイルを選択してから
送るメニューで zScripter を選ぶとスクリプトが実行されて
標準出力と標準エラー出力が zOut.txt に書き出されます。

 この書き出しを抑制し、素直にコンソールに出力させたいときは
スクリプトの1行目か2行目に (no>) という5文字を書いておきます。

 たとえば下のとおり。test.py, test.bat の例です。

# test.py -- encoding: cp932  (no>)
print("これは python のテストです.")
# EndOfScript
@echo off
rem test.bat -- (no>)
echo これは batコマンドのテストです.
:EndOfBat

 (no>) という5文字は、(no redirect) の13文字でもかまいません。半角スペースを含めての13文字。

 なお、Rcmd.exe が実行されたときは、標準出力も標準エラー出力も発生しないので
(no>) を書き入れても意味をなしません。

 また、「コマンド入力」で入力されたコマンドの結果は、
必ず zOut.txt に書き出されます。

[目次へ]

7. zScripter.vbs の書き換え

 zScripter.vbs はテキストファイルなので
メモ帳などのエディタで書き換えることができます。

 10行目から17行目は、書き換え可能なグローバル変数の定期です。

 以下にその書き換えのポイントを記します。

a. installFolder

 4つのソフトウェアの置き場所を指定できます。

 installFolder = "E:\commands" とすれば、
E:\commands に4つのソフトウェアが置かれているものと仮定されます。

 zScripter.vbs が置かれているフォルダとは異なるフォルダを
4つのソフトウェアの置き場所にしたいときに指定します。

 installFolder = "\commands" のようにトライブ名を省略すると、
zScripter.vbs が置かれているドライブと同じドライブが仮定されます。

b. workFolder

 作業用のフォルダを指定できます。

 コマンドの実行結果を記録した zOut.txt は
指定されたスクリプトファイルと同じフォルダに書き出されますが、
「コマンド入力」の場面で何か入力して実行したときは
zScripter.vbs が置かれているのと同じフォルダに書き出されます。

 そうではなく別のフォルダに書き出したい場合に workFolder を指定します。

 workFolder = "E:\work" とか workFolder = "\work" のように指定します。

 ドライブ名を省略したときは zScripter.vbs と同じドライブとみなされます。

 workFolder = "%HOMEDRIVE%%HOMEPATH%" のように
環境変数を引用することもできます。

 「コマンド入力」の場面で ‘!’ 1文字だけ入力するとDOS窓が開きますが
カレントディレクトリは、workFolder で指定したところになります。

c. pythonOption

 python.exe が起動するときのオプションを指定できます。

 デフォルトでは "" になっているので何も指定しません。

d. rOption

 Rcmd.exe または Rscript.exe が起動するときのオプションを指定できます。

 デフォルトは "--no-save -q --internet2" です。

e. rubyOption

 ruby.exe が起動するときのオプションを指定できます。

 デフォルトでは "" になっているので何も指定しません。

f. texOption

 ptex2pdf.exe が起動するときのオプションを指定できます。

 デフォルトは "-l" です。

g. soundOn

 zScripter.vbs の処理が終了したとき、
合図の音をならすかどうかを指定できます。

 デフォルトは True なので音がなります。

 soundOn = False とすれば音はなりません。

h. messageOn

 zScripterにおいてスクリプトが正常に実行されなかった場合などに
「スクリプトの指定がありません.」などのメッセージが表示されます。

 こうしたメッセージを出したくないときは messageOn = False とします。

 デフォルトは True なのでメッセージが出ます。

 なお、メッセージを表示するダイアログは、5秒が経過すると自動的に閉じられます。

[目次へ]

8. 関連の環境変数とzScripter.datの書き換え

 zScripter.dat は、必ず zScripter.vbs と同じフォルダの下におきます。

 zScripter.vbs は、このdatファイルを読み込んで環境変数を設定します。

 4つのソフトウェアの置き場所を F:\z だと仮定して、
どのように環境変数が設定されるのかを記します。

 なお、zScripterが設定する環境変数は、その場かぎりのものです。
zScripterの処理が終了すると、消えてなくなります。

(1) 4つのソフトウェアの置き場所に関する環境変数

 Zで始まる変数をいくつか設定しますが、
いずれも4つのソフトウェアの置き場所に関するものです。

(2) コマンドのフルパスに関する環境変数

 以下の環境変数が設定されます。

 「コマンド入力」の場面で %PYTHON% などのように記述できます。

 zScripterの下で実行するバッチコマンドでも %RUBY% のような記述が可能です。

(3) zScripter.dat における環境変数の記述形式

 zScripter.dat には環境変数の変数名とその値の組が
空白行で区切られて書かれています。

 1行目が変数名、2行目がその値です。

 3行以上が書かれている場合は、2行目以降がすべて変数の値になりますが、
改行を無視して 1行に連結したものが値になります。

ABC
apple
[空白行]
XYZ
banana;
chery

 上の記述は、SET ABC=apple および SET XYZ=banana;chery という2行の実行と同じ意味になります。

(4) zScripter.datに記述されているものの意味

 実際の zScripter.dat にある記述は、かなりごちゃごちゃしています。

 1行目の PATH@python は環境変数の変数名ですが、
@python は「pythonの置き場所に関するもの」ということを示すもので
実際にはこの @python を削除して PATH が変数名になります。

 変数の値に出てくる $wpy および $python は、
具体的なpython関連のフォルダ名に変更されます。

 python関連は記述が多いですが、これは WinPython に付属してくる
WinPython Command Prompt.exe を実行したときに設定される環境変数と同じです。

 Rのフォルダ名に関するものには @rcmd、rubyだと @ruby
w32texには @tex が付いています。

 変数の値の $rcmd, $ruby, $tex は、それぞれのフォルダ名に置き換えられます。

(5) 32bit対応の記述に変更するには

 32bit対応にするには zScripter.dat について次の書き換えを行います。

(6) python, rubyの自作ライブラリの置き場所を指定する例

 自作ライブラリをいつでも呼び出せるようにするには、
ライブラリパスの通ったフォルダに自作品を置けばいいのですが、
他のライブラリと混在することになります。

 そうではなく自作品を別のフォルダに置いておきたい場合、
たとえば、それぞれ F:\z\MyPythonLib, F:\z\MyRubyLib に置くとすると
zScripter.dat に下のような記述を書き加えます。

PYTHONPATH
%ZDRIVE%%ZPATH%\MyPythonLib
[空白行]
RUBYLIB
%ZDRIVE%%ZPATH%\MyRubyLib

8. その他

 まだ説明しきれていない事柄を記します。

(1) 4つのソフトウェアの置き場所にあるbinフォルダ

 zScripterは、4つのソフトウェアの置き場所の下にbinというフォルダがあれば、
それにもPATHを通します。

 具体的には F:\z\bin というフォルダがあれば、それにPATHを通します。

 そのフォルダの下に実行可能なファイル(exe, batなど)を置いておけば、
それらを容易に呼び出せます。

 たとえば pandoc.exe, pandoc-citeproc.exe を置いておけば、
pandocの利用が容易になります。

 もちろん、zScripterが動作している間だけ有効なので
他の場面では効かなくなります。ご注意ください。

(2) zScripter.vbs の終了コード

 zScripter.vbs は、正常にスクリプトを実行できたときは 0 を返します。

 それ以外のケースは下のとおり。

~ 以上 ~

Copyright (C) T. Yoshiizumi, 2020 All rights reserved.


トップページへ