表題の通り、jsxからexeを実行したいのです。
ファイルオブジェクトにexecute()メソッドがあることはある。
ただし、引数を渡せないときた。
しかも、渡す引数は実行するたびに変わる可能性があるのです。
こんな時どうするか?
jsxからバッチファイルを作るしかないじゃないですか!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 件のコメント:
コメントを投稿