表題の通り、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 件のコメント:
コメントを投稿