Windowsのコマンドラインから既定のブラウザを起動するには
rundll32 url.dll,FileProtocolHandler URL
という形で呼び出せばよいようです。「URL」は任意のURLに置き換えてください。
Javaから呼び出すときは
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
のようになります。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| « 5月 | ||||||
| 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 | 28 | 29 | |||
Windowsのコマンドラインから既定のブラウザを起動するには
rundll32 url.dll,FileProtocolHandler URL
という形で呼び出せばよいようです。「URL」は任意のURLに置き換えてください。
Javaから呼び出すときは
Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);
のようになります。
シェルスクリプトを作っていて、一連の処理の途中でエラーが発生したら、それ以後の処理の実行を中止したいことがあります。
そんなときは、シェルスクリプトの最初に「set -e」と記述します。そうすれば、それ以後に実行したコマンドの終了ステータスが0以外になった場合、その時点で処理を中止します。
動作確認のために、次のようなシェルスクリプトを実行してみました。
シェルスクリプト(test.sh)
#!/bin/sh set -e echo "start" ./test2.sh echo "end"
シェルスクリプト(test2.sh)
#!/bin/sh echo "test2" exit 1
この実行結果は次のようになりました。
$ ./test.sh start test2 $
test2.shの「exit 1」を「exit 0」にすると、「end」まで表示されます。
シェルスクリプトやバッチファイルを書いていると、コマンドの中に相対パスで別のファイルを指定したりしてしまいます。
例えばシェルスクリプトと同じディレクトリにある”test.txt”というファイルを開くシェルスクリプトなら、単純に
cat test.txt
とすればよいように思うかもしれません。
試しに、上記の内容を記述したファイルを/tmp/test.shとし、適当なテキストファイルを/tmp/test.txtとして用意し、
自身のホームディレクトリより
/tmp/test.sh
として実行するとどうなるでしょうか。
きっとエラーになるはずです。
これは、シェルスクリプトの中で実行されるコマンド(cat)が、ホームディレクトリのtest.txtというファイルを開こうとするからです。
シェルスクリプトと同じディレクトリにあるファイルを開こうとするなら、一度シェルスクリプトがあるディレクトリに移動し、終了後に戻るという操作が必要です。
これをシェルスクリプトで記述するなら以下のようになります。
pushd `dirname $0` > /dev/null (実行するコマンド) popd > /dev/null
また、バッチファイルなら以下のようになります。
@pushd %~dp0 (実行するコマンド) @popd
私は、シェルスクリプトやバッチファイルを書くとき、とりあえず上記のコマンドをおまじないとして書くようにしています。
注意: ファイルパスをオプションとして指定するようなコマンドを作成するときは、上記の手法は使えません