文書の過去の版を表示しています。


選択中のファイルを外部スクリプトに渡す

いまいち使い方が把握できていないまま試したので、もっと楽な方法があるかも。

pythonなどで書かれた、簡単なファイル処理を行うスクリプト(引数としてファイルのパスを与えられ、ファイルに何らかの操作をするもの)に、As/Rで現在選択中のファイル(群)を渡す方法。

例として「バックアップとして、ファイル名の末尾に今日の日付を付与して同じディレクトリにコピーを作成する」というスクリプトがあったとする。「project.php」を引数に渡すと「project_20150202.php」を作ってくれるみたいなね。んで、As/Rで選択中のファイルにそのスクリプトを適用したいとする。

結論から言うと、コマンド定義ファイルとスクリプトコマンドファイル、2つのファイルを編集/作成する必要がある。

コマンド定義ファイル

コマンド定義ファイル

As/Rで特定の動作(コマンド)を登録するには、「(ユーザーフォルダ)\ScriptCommand.txt」などコマンド定義ファイルにコマンドIDとともに記述する。コマンド定義ファイルは複数あり、どれに書いても一応動作するが、用途によって分類できるように分かれている。

書式は次の通り。

コマンドID<TAB>ファイル情報の送信手順(省略可能)<TAB>コマンドの呼び出しの抑止モード<TAB>コマンドのフルパス<TAB>説明

コマンドのフルパスには、「外部実行ファイル(.exe)」または「スクリプトコマンドファイル」を指定できる。

このうち外部実行ファイルを使うと、実行ファイルは実行されるものの、引数として指定できる内容は限られ、現在選択中のファイルを指定することができない。(現在のディレクトリなど一部は指定することができる)

よって、スクリプトコマンドファイルを指定する方法を取ることになる。今回の例だと以下のように定義しておけばいい。

40004<TAB>NF-<TAB>%Script_dir%copyFileWithDate.txt<TAB>日付を付与してバックアップ
  • ID:40004
    • 他とかぶらない適当な番号を付ける。範囲の目安は各コマンド定義ファイルで指定されている。
  • ファイル情報の送信手順
    • スクリプトコマンドを指定したため不要。省略
  • コマンドの呼び出しの抑止モード:NF-
    • Nは実体のあるディレクトリからの呼び出しのみ許可。Fはファイルを選択している時のみ許可。
  • コマンドのフルパス
    • スクリプトコマンドファイルを指定。
    • %Script_dir%は、ユーザーフォルダのScriptフォルダに置換される。

スクリプトコマンドファイル

基本的なスクリプトコマンド

スクリプトコマンドファイルは、(どこでもいいのだが基本は)「(ユーザーフォルダ)\Script\」以下にUTF-16のテキストファイルで作る。引数の内容や渡し方(まとめてor1個ずつなど)など、いくつかの細かな設定を行った後、「Run=(実行ファイルのフルパス)」で実行する。

今回の例だとコマンド定義ファイルで指定した通り「(ユーザーフォルダ)\Script\copyFileWithDate.txt」を作成し、内容を以下のようにする。

CommandLineOption="(実行したいpythonスクリプト.py)" ?SelFile?
MultiCommandMode=1
ShiftSilentMode=0
BootDir=
BootMode=0
OpenMode=0
ShowWindow=6

Run=(python本体)\python.exe

これで、選択中のファイル(?SelFile?が置換される)を、pythonスクリプトに渡すことができた。

後は、As/Rのオプションからキー割り当てでこのコマンドをたとえばShift-Bにでも割り振っておけば、一発でバックアップを作成できる。

確認ダイアログの表示

その他のスクリプトコマンド

普通はこれだけでよいが、あまり簡単に実行できてしまうと、日常で使っていく内についうっかりキーを間違えてしまわないとも言い切れない。行う処理が時間のかかるものだったり、削除など破壊的な動作をするものであれば、なおさら面倒なことになる。

スクリプトコマンドファイルの先頭に1行追加するだけで、確認ダイアログを表示させ、万が一の際のワンクッションとすることができる。

MessageBoxYN=処理を開始します
software/asr/external_script.1495767173.txt.gz · 最終更新: 2017/05/26 (外部編集)
CC Attribution 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0