none
IE10のコマンドラインに指定できるURLの最大長について RRS feed

  • 質問

  • Windows7環境で、IE10をコマンドラインからURL指定で起動しようとすると、
    起動しない場合があります。(一瞬IEらしきウインドウが起動しますがすぐに消えます。)
    引数に指定するURLを変えて実験したところ,引数に指定するURLの長さが1870バイト以上の場合に起動しないようです。
    (引数に指定するURLの長さは「http://~」の先頭から数えた長さです。)
    なお、IEを起動したあとにアドレスバーへの直接指定すると1870バイト以上でも指定できました。

    下記について質問いたします。
     ・上記動作となる原因
     ・1870文字以上のURLを指定してIE10をコマンドラインから起動する方法(現象の回避方法)
     ・IE10で取り扱えるURLの最大長(2083バイトではない?)

    2018年5月14日 4:39

すべての返信

  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018


    start http:...

    start "" "http:..."

    2018年5月15日 10:51
  • コマンド プロンプトでのパラメータには、文字列長や使用できる文字に関して制限があるので、多分その制限に引っかかっているだけでは?
    (だから、IE のアドレス バーに入力できる URL の長さと比較しても、意味がないかと。)

    下記サイトによると、コマンド プロンプトでのパラメータ長の上限は、最大で 8191 文字だそうです。
    ------------------------------------------------
    コマンド プロンプト (cmd.exe) のコマンドライン文字列の制限
    https://support.microsoft.com/ja-jp/help/830473/command-prompt-cmd-exe-command-line-string-limitation
    ------------------------------------------------

    なので質問されている問題は、パラメータ長に起因するものではないと考えられます。
    そーなると URL に、コマンド パラメータで制限対象となる特殊文字が含まれている可能性が考えられると思います。
    制限対象となる特殊文字についてはググれば色々と情報が見つかると思いますが、とりあえず思いつく例としては '&', '|', '>' あたりは特殊文字として扱われると思います。

    2018年5月16日 1:24
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018

    コマンド プロンプトでのパラメータには、文字列長や使用できる文字に関して制限があるので、多分その制限に引っかかっているだけでは?
    そういう話ではありません。質問者が言ってるのはiexplore.exeの引数urlの長さ制限の話です。
    2018年5月16日 2:23
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018

    コマンド プロンプトでのパラメータには、文字列長や使用できる文字に関して制限があるので、多分その制限に引っかかっているだけでは?
    そういう話ではありません。質問者が言ってるのはiexplore.exeの引数urlの長さ制限の話です。

    > Windows7環境で、IE10をコマンドラインからURL指定で起動しようとすると、
    > 起動しない場合があります。

    ぢゃぁ、これ↑はなに?

    2018年5月16日 2:36
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018

    start iexplore.exe http:...
    で起動したときの話でしょう。

    win10+ie11で確認すると、2000弱より長いとurlが渡らないようです。start pageが開きます。
    start http:...
    なら開きます。
    2018年5月16日 3:04
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018

    start iexplore.exe http:...
    で起動したときの話でしょう。

    win10+ie11で確認すると、2000弱より長いとurlが渡らないようです。start pageが開きます。
    start http:...
    なら開きます。

    "start iexplore.exe http:..." でも "start http:..." でも、どっちでもいいですけど、それを実行させるのは Command Prompt や PowerShell からなのでは?
    だとしたら特殊文字の制限を受けるはずで、URL を含めたコマンド ライン長が 8191 文字以下なのであれば、単に URL を '"' (ダブルコーテーション) で囲めば済む。。。というだけの話では?
    2018年5月16日 3:42
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018
    だから違うって。

    start http:...
    なら開きます。

    2018年5月16日 3:57
  • 「start http:...」で開けて「start "http:..."」で開けないのは、単に start コマンドでの [コマンド] パラメータ部分を省略しているためでは?

    例えば、

    https://www.google.co.jp/search?ei=A677WpaxHouh8QWAsIKoAw&q=windows+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3+%E7%89%B9%E6%AE%8A%E6%96%87%E5%AD%97+%26&oq=&gs_l=psy-ab.1.5.35i39k1l6.18235.18235.0.46648.1.1.0.0.0.0.0.0..1.0....0...1c.1.64.psy-ab..0.1.110.6...110.5G3ekxb4ucY

    のサイトを例にすると、

    start iexplore "https://www.google.co.jp/search?ei=A677WpaxHouh8QWAsIKoAw&q=windows+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3+%E7%89%B9%E6%AE%8A%E6%96%87%E5%AD%97+%26&oq=&gs_l=psy-ab.1.5.35i39k1l6.18235.18235.0.46648.1.1.0.0.0.0.0.0..1.0....0...1c.1.64.psy-ab..0.1.110.6...110.5G3ekxb4ucY"

    は、きちんと検索条件付きで開くが、

    start iexplore https://www.google.co.jp/search?ei=A677WpaxHouh8QWAsIKoAw&q=windows+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3+%E7%89%B9%E6%AE%8A%E6%96%87%E5%AD%97+%26&oq=&gs_l=psy-ab.1.5.35i39k1l6.18235.18235.0.46648.1.1.0.0.0.0.0.0..1.0....0...1c.1.64.psy-ab..0.1.110.6...110.5G3ekxb4ucY

    start https://www.google.co.jp/search?ei=A677WpaxHouh8QWAsIKoAw&q=windows+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3+%E7%89%B9%E6%AE%8A%E6%96%87%E5%AD%97+%26&oq=&gs_l=psy-ab.1.5.35i39k1l6.18235.18235.0.46648.1.1.0.0.0.0.0.0..1.0....0...1c.1.64.psy-ab..0.1.110.6...110.5G3ekxb4ucY

    start "https://www.google.co.jp/search?ei=A677WpaxHouh8QWAsIKoAw&q=windows+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3+%E7%89%B9%E6%AE%8A%E6%96%87%E5%AD%97+%26&oq=&gs_l=psy-ab.1.5.35i39k1l6.18235.18235.0.46648.1.1.0.0.0.0.0.0..1.0....0...1c.1.64.psy-ab..0.1.110.6...110.5G3ekxb4ucY"

    の3つは検索条件付きでは開かない。
    文字数の影響であるのなら、なぜ下記3つのケースが検索条件付きで開かないのか、教えてください。

    2018年5月16日 4:32
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018

    「start http:...」で開けて「start "http:..."」で開けないのは
    なんて誰も言ってませんが?

    しかし、それは
    単に start コマンドでの [コマンド] パラメータ部分を省略しているためでは?
    でなく、"タイトル"を省略してるためで、
    start "dummy title" "http:..."
    省略しなければ開けるはずです。

    2018年5月16日 4:47
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018
    あなたも、いい加減、自分で確認してみれば?
    start iexplore.exe http:...
    で起動したときの話でしょう。

    win10+ie11で確認すると、2000弱より長いとurlが渡らないようです。start pageが開きます。

    start iexplore.exe https://www.google.com/search?q=aaaaaaaaaaaaaaaaaaaaa 1500 くらいと 2500くらい
    面倒臭いけど、再度細かく調べると、2083でした。
    start http:...
    も同じ。前に確認したときは違ってたと思ったけど、ミスしたのかも。



    2018年5月16日 5:02
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018
    だから違うって。

    start http:...
    なら開きます。

    ↑ 、この説明の通りだとすれば、

    start https://www.google.co.jp/search?ei=A677WpaxHouh8QWAsIKoAw&q=windows+%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%A9%E3%82%A4%E3%83%B3+%E7%89%B9%E6%AE%8A%E6%96%87%E5%AD%97+%26&oq=&gs_l=psy-ab.1.5.35i39k1l6.18235.18235.0.46648.1.1.0.0.0.0.0.0..1.0....0...1c.1.64.psy-ab..0.1.110.6...110.5G3ekxb4ucY

    で、検索条件付きで開くはずでは?

    2018年5月16日 5:06
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018
    最初から

    start http:...

    start "" "http:..."

    こう書いてますが? エスケープが必要な場合は後者です。

    それから一般論的には、urlエンコードの%は引用符でエスケープできないので、バッチ内では、%を%%でエスケープする。バッチ外では%を^%に変えて環境変数名と一致しないように誤魔化す。
    2018年5月16日 5:21
  • 「:/?&」以外の記号を含まないURLを使用して検証したところ,次の動作となりました。

    IE10が正常起動するケース:
    ・start "" "<1869バイトのURL>"
    ・start "" "<1870バイトのURL>"
    ・"C:\Program Files\Internet Explorer\iexplore.exe" "<1869バイトのURL>"
    ・"C:\Program Files\Internet Explorer\iexplore.exe" "<1869バイトのURL>"

    IE10が起動しないケース:
    ・"C:\Program Files\Internet Explorer\iexplore.exe" "<1870バイトのURL>"
    ・"C:\Program Files\Internet Explorer\iexplore.exe" "<1870バイトのURL>"
    ※32bit版のフルパス指定でも結果は同じでした。

    2018年5月16日 7:49
  • © ウィンドウズスクリプトプログラマ - Windows Script Programmer 2018

    iexplore.exeの引数urlの長さ制限
    があるようですね。win10+ie11と動作が異なるところを見ると実装による制限でしょう。

    start http:...

    start "" "http:..."

    は関連付けのdeligateexecuteでCOMオブジェクトに渡すので渡し方が違う。
    2018年5月16日 7:58
  • すでに参照されていると思いますが。。。。
    ------------------------------------------------
    Internet Explorer では URL に最大 2,083 文字が使用可能
    https://support.microsoft.com/ja-jp/help/208427/maximum-url-length-is-2-083-characters-in-internet-explorer
    ------------------------------------------------

    なので、URL が 1870 バイト (1870 文字) ならば、文字列長の制限は関係ないと思うのです。
    が、コマンドを実行する際の cmd.exe プロセスに 3rd ベンダー製 DLL がアタッチされているなら、話はちょっと変わってくるかも。
    とりあえず、"Process Explorer" か "Process Monitor" を使って、コマンド プロンプト オープン時に起動される "cmd.exe" と "conhost.exe" のプロセスに、3rd ベンダー製 DLL がアタッチされていないか確認してみては?
    (もしかしたら、3rd ベンダー製セキュリティ対策ソフトが、独自 DLL をアタッチさせている場合も考えられるので。)

    2018年5月16日 8:22