検索
カレンダー
2017年4月
« 4月    
 1
2345678
9101112131415
16171819202122
23242526272829
30  
ブログメニュー
Amazon検索
キーワード:

Windowsのコマンドラインから既定のブラウザを起動するには

2009年10月21日

Windowsのコマンドラインから既定のブラウザを起動するには

rundll32 url.dll,FileProtocolHandler URL

という形で呼び出せばよいようです。「URL」は任意のURLに置き換えてください。

Javaから呼び出すときは

Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + url);

のようになります。

シェルスクリプトで異常が発生した場合に処理を中止する

2007年8月16日

シェルスクリプトを作っていて、一連の処理の途中でエラーが発生したら、それ以後の処理の実行を中止したいことがあります。

そんなときは、シェルスクリプトの最初に「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」まで表示されます。

シェルスクリプト(バッチファイル)を別ディレクトリからの起動に対応させる

2007年3月30日

シェルスクリプトやバッチファイルを書いていると、コマンドの中に相対パスで別のファイルを指定したりしてしまいます。
例えばシェルスクリプトと同じディレクトリにある”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

私は、シェルスクリプトやバッチファイルを書くとき、とりあえず上記のコマンドをおまじないとして書くようにしています。

注意: ファイルパスをオプションとして指定するようなコマンドを作成するときは、上記の手法は使えません