2016年12月7日水曜日

Photoshopのスクリプトからexeを実行したい

Photoshopの話しが続きますが・・・。

表題の通り、jsxからexeを実行したいのです。

ファイルオブジェクトにexecute()メソッドがあることはある。
ただし、引数を渡せないときた。
しかも、渡す引数は実行するたびに変わる可能性があるのです。


こんな時どうするか?
jsxからバッチファイルを作るしかないじゃないですか!


function createBatchFile( arg )
{
 const CR = String.fromCharCode(13);
 const BATCH_FILE = new File(Folder.temp+"/hogehoge.bat");
 
 var command;
 switch( arg )
 {
 case 0: command = "echo \"hoge\""; break;
 case 1: command = "echo \"hogehoge\""; break;
 }
 
 BATCH_FILE.open("w");
 // 書き込み開始
 BATCH_FILE.write("@echo off"+CR);
 BATCH_FILE.write(command+CR);
 BATCH_FILE.write("pause"+CR);
 // 書き込み終了
 BATCH_FILE.close();
 
 // バッチ実行
 BATCH_FILE.execute();
 
}

createBatchFile( 0 );
createBatchFile( 1 );


3行目のfromCharCode(13)っていうのは改行コード。
4行目のFolder.tempでPhotoshopが使用するテンポラリフォルダを取得できるので、そこへ間借りさせてもらい"hogehoge.bat"を指定しています。
7行目のswitchで記入する文字列を分岐。この部分で実際に実行するexeを指定するわけです。
13行目でファイルを開き15行目からバッチファイルに記述です。

最後、22行目でバッチの実行。

すると2回関数を呼んでいるので、DOS窓が2つ出てくるはず。


execute自体は実行終了を待ってくれないので連続実行は危険極まりない。

0 件のコメント:

コメントを投稿