HTAでコマンドライン引数を取得・分割

HTAコマンドライン引数を渡す

HTAコマンドライン引数を受け取る

HTA:APPLICATION要素に設定したid属性値が、HTA:APPLICATIONオブジェクトを参照するグローバル変数の名前になる。
コマンドライン引数を含んだ文字列は、HTA:APPLICATIONオブジェクトのcommandLineプロパティで得られる。その書式は「"実行中のスクリプト自身のパス" 空白が含まれない引数 "空白が含まれる引数"」といった具合。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<hta:application id="oHTA"></hta:application>
</head>
<body>
<script type="text/jscript">
oHTA.commandLine  // => コマンドライン引数を含んだ文字列
</script>
</body>
</html>

コマンドライン引数を分割する

前述のとおり、commandLineプロパティは実行中のスクリプト自身のパスを含んでいたり、ダブルクォーテーションで囲まれた引数やそうでない引数があったりと、そのままでは扱いにくい。
そこで、commandLineプロパティの文字列から引数のみを抽出し、配列として返す関数を作った。

function splitCml(cml) {
  var res, reg, mat;
  reg = /"([^"]+)"|([^ ]+)/g;
  res = [];
  while (mat = reg.exec(cml))
    res[res.length] = mat[1] || mat[2];
  return res.slice(1);
}