macでバッチファイル実行
Windowsでは、テキストファイルにMS-DOSのコマンドを書いて、「.bat」というファイル名で保存すれば、そのファイルのアイコンをダブルクリックすることで、書いたコマンドを実行することができます。
javaで作ったプログラムを、ヒープサイズ指定して実行したいときなどに便利なので、配布用のjavaアプリには.batファイルを添付するようにしています。
たとえば、
と書いたテキストファイルを作り、「Run.bat」などの名前で保存しておく感じ。
で、同じようなことをMacでやりたいなーと思っていた。
実は以前に調べたことがあったのだが、マックを使い慣れていない私にとっては、ネットの情報の通りにやってるつもりでもなかなか出来ず、挫折していました・・・
しかし今日は、何としてもやらねばならぬ状況に!
「僕のMacBookAirにあのソフト入れといて、今日出張で使うから」
と、最近WindowsからMacに乗り換えた上司に言われてしまったのである。
ということで、午前中に奮闘すること2時間。
なんとかできたので、メモしておく。
OSは、Mac OSX 10.7.3
ネットの情報では、
・ターミナルを使う方法
・Automatorを使う方法
・AppleScriptを使う方法
などが紹介されていましたが、結局うまくいったのはターミナルを使う方法でした。
1)テキストファイルを準備する
適当なテキストエディタで下記のような起動用のシェルスクリプトを書き、***.commandという名前で保存します。
ここでのポイントは、2行目と3行目。
このスクリプトを起動したディレクトリがカレントディレクトリになるようにします。
こうしないと、
というエラーが出てしまいます。
こちらを参考にさせていただきました。
二つ目のポイントは、.commandという拡張子をつけること。
こうすることで、ダブルクリックしたときに、デフォルトで関連づけられているターミナルが自動的に開くようになります。
さらに三つ目のポイント!
このテキストファイルは、windowsの改行コード(CR + LF)では動かず、Unix(LF)でないと動かないようです。私が試した限りでは、mac用(CR)でもダメでした。必ずmac上で作成し、windowsで作成した場合は、改行コードをUnix用(LF)に合わせておきましょう。
今回は、Run.commandというファイル名にしました。
「テキストエディット」というツールで、フォーマット「標準テキスト」で保存しました。
2)作成したファイルに実行権限をつける
1)のままだと、ダブルクリックすると
「ファイル"Run.command"は適切なアクセス権限がないため実行できません。」
と言われてしまいます。そこで、アクセス権の変更をします。
「Command + I」などで、ファイルの情報を見ると、「共有とアクセス権」の項目がありますが、ここで変更できるのは読み/書きだけ。アクセス権限の変更は、ターミナルでコマンドを打って行います。
ターミナルは、Macintosh HD -> アプリケーション -> ユーティリティーの中にあります。
起動後、cdコマンドで、先ほど作ったRun.commandがあるフォルダまで移動します。
フォルダのパスがわからないときは、「cd」と打ったあとにスペースを入れ、そこに、フォルダのアイコンをドラッグ&ドロップすると、パス部分が入力されます。
ls -lコマンドで見ると、デフォルトでは「-rw-r--r--」になっていました。こんな感じ。
chmodコマンドで権限を変更します。
ls -lで確認すると、-rwxr--r--となったことが分かります。
これで、準備はOK。
あとは、Run.commandをダブルクリックすればOKです。
初回は、
「"Run.command"は、スクリプトアプリケーションで、インターネットからダウンロードされました。開いてもよろしいですか?」
と聞かれますが、自分で作ったファイルなので、構わず「開く」で問題ありません。
こちらのサイトが非常に参考になりました。ありがとうございます。
javaで作ったプログラムを、ヒープサイズ指定して実行したいときなどに便利なので、配布用のjavaアプリには.batファイルを添付するようにしています。
たとえば、
java -Xmx1024M -jar someapp.jar
と書いたテキストファイルを作り、「Run.bat」などの名前で保存しておく感じ。
で、同じようなことをMacでやりたいなーと思っていた。
実は以前に調べたことがあったのだが、マックを使い慣れていない私にとっては、ネットの情報の通りにやってるつもりでもなかなか出来ず、挫折していました・・・
しかし今日は、何としてもやらねばならぬ状況に!
「僕のMacBookAirにあのソフト入れといて、今日出張で使うから」
と、最近WindowsからMacに乗り換えた上司に言われてしまったのである。
ということで、午前中に奮闘すること2時間。
なんとかできたので、メモしておく。
OSは、Mac OSX 10.7.3
ネットの情報では、
・ターミナルを使う方法
・Automatorを使う方法
・AppleScriptを使う方法
などが紹介されていましたが、結局うまくいったのはターミナルを使う方法でした。
1)テキストファイルを準備する
適当なテキストエディタで下記のような起動用のシェルスクリプトを書き、***.commandという名前で保存します。
#!/bin/bash
MY_DIRNAME=$(dirname $0)
cd $MY_DIRNAME
java -Xmx1024M -jar someapp.jar
ここでのポイントは、2行目と3行目。
このスクリプトを起動したディレクトリがカレントディレクトリになるようにします。
こうしないと、
Unable to access jarfile someapp.jar
というエラーが出てしまいます。
こちらを参考にさせていただきました。
二つ目のポイントは、.commandという拡張子をつけること。
こうすることで、ダブルクリックしたときに、デフォルトで関連づけられているターミナルが自動的に開くようになります。
さらに三つ目のポイント!
このテキストファイルは、windowsの改行コード(CR + LF)では動かず、Unix(LF)でないと動かないようです。私が試した限りでは、mac用(CR)でもダメでした。必ずmac上で作成し、windowsで作成した場合は、改行コードをUnix用(LF)に合わせておきましょう。
今回は、Run.commandというファイル名にしました。
「テキストエディット」というツールで、フォーマット「標準テキスト」で保存しました。
2)作成したファイルに実行権限をつける
1)のままだと、ダブルクリックすると
「ファイル"Run.command"は適切なアクセス権限がないため実行できません。」
と言われてしまいます。そこで、アクセス権の変更をします。
「Command + I」などで、ファイルの情報を見ると、「共有とアクセス権」の項目がありますが、ここで変更できるのは読み/書きだけ。アクセス権限の変更は、ターミナルでコマンドを打って行います。
ターミナルは、Macintosh HD -> アプリケーション -> ユーティリティーの中にあります。
起動後、cdコマンドで、先ほど作ったRun.commandがあるフォルダまで移動します。
例) $ cd /Users/YOURACCOUNT/Desktp/someappdir/
フォルダのパスがわからないときは、「cd」と打ったあとにスペースを入れ、そこに、フォルダのアイコンをドラッグ&ドロップすると、パス部分が入力されます。
ls -lコマンドで見ると、デフォルトでは「-rw-r--r--」になっていました。こんな感じ。
$ ls -l Run.command
-rw-r--r--@ 1 sakurai staff 66 3 22 11:35 Run.command
chmodコマンドで権限を変更します。
$ chmod u+x Run.command
ls -lで確認すると、-rwxr--r--となったことが分かります。
これで、準備はOK。
あとは、Run.commandをダブルクリックすればOKです。
初回は、
「"Run.command"は、スクリプトアプリケーションで、インターネットからダウンロードされました。開いてもよろしいですか?」
と聞かれますが、自分で作ったファイルなので、構わず「開く」で問題ありません。
こちらのサイトが非常に参考になりました。ありがとうございます。
スポンサーサイト