21

バッチファイルで2つの別々のプログラムを起動してから、コマンドラインウィンドウを閉じたいのですが。実際、明確にするために、2つの異なるURLでInternetExplorerを起動しています。

これまでのところ、私はこのようなものを持っています:

start "~\iexplore.exe" "url1"
start "~\iexplore.exe" "url2"

私が得たのは、2番目のURLのみがロードされたInternetExplorerの1つのインスタンスです。2番目が2番目を置き換えているようです。新しいコマンドラインウィンドウをロードし、ロード時に実行するコマンドを渡す構文を覚えているようですが、参照が見つかりません。

質問の2番目の部分として、クイックバッチファイルを作成する必要があるときのために保持するのに適した参照URLは何ですか?

編集:それは機能するので、私は答えをマークしました。これで、URLごとに1つずつ、合計2つのウィンドウが開きます。(ありがとう!)面白いことに、元の構文を使用した/ dアプローチを使用しないと、既存のInternetExplorerインスタンスを開いているかどうかに基づいて異なる結果が得られます。

  • そうすると、2つのURLに2つの新しいタブが追加されます(甘いです!)
  • そうでない場合は、渡した2番目のURLの最後のタブが1つだけ表示されます。
4

9 に答える 9

39

Try this in your batch file:

@echo off
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.yahoo.com
于 2008-10-09T19:54:31.080 に答える
6

これら 2 つのスクリプトのいずれかを使用して、(単一の) 新しい IE ウィンドウの別々のタブで URL を開くことができます。バッチ スクリプト内から (またはコマンド プロンプトから)、これらのスクリプトのいずれかを呼び出すことができます。

JavaScript "urls.js"
のような名前のファイルを作成します:

var navOpenInNewWindow = 0x1;
var navOpenInNewTab = 0x800;
var navOpenInBackgroundTab = 0x1000;

var intLoop = 0;
var intArrUBound = 0;
var navFlags = navOpenInBackgroundTab;
var arrstrUrl = new Array(3);
var objIE;

    intArrUBound = arrstrUrl.length;

    arrstrUrl[0] = "http://bing.com/";
    arrstrUrl[1] = "http://google.com/";
    arrstrUrl[2] = "http://msn.com/";
    arrstrUrl[3] = "http://yahoo.com/";

    objIE = new ActiveXObject("InternetExplorer.Application");
    objIE.Navigate2(arrstrUrl[0]);

    for (intLoop=1;intLoop<=intArrUBound;intLoop++) {

        objIE.Navigate2(arrstrUrl[intLoop], navFlags);

    }

    objIE.Visible = true;
    objIE = null;


VB スクリプト"urls.vbs"
のような名前のファイルを作成します。

Option Explicit

Const navOpenInNewWindow = &h1
Const navOpenInNewTab = &h800
Const navOpenInBackgroundTab = &h1000

Dim intLoop       : intLoop = 0
Dim intArrUBound  : intArrUBound = 0
Dim navFlags      : navFlags = navOpenInBackgroundTab

Dim arrstrUrl(3)
Dim objIE

    intArrUBound = UBound(arrstrUrl)

    arrstrUrl(0) = "http://bing.com/"
    arrstrUrl(1) = "http://google.com/"
    arrstrUrl(2) = "http://msn.com/"
    arrstrUrl(3) = "http://yahoo.com/"

    set objIE = CreateObject("InternetExplorer.Application")
    objIE.Navigate2 arrstrUrl(0)

    For intLoop = 1 to intArrUBound

        objIE.Navigate2 arrstrUrl(intLoop), navFlags

    Next

    objIE.Visible = True
    set objIE = Nothing


"JavaScript"または"VB Script" を決定したら、いくつかの選択肢があります。

URL が静的な場合:

1) 「JS/VBS」スクリプト ファイル (上記) を記述し、それをバッチ スクリプトから呼び出すことができます。

バッチ スクリプト (またはコマンド プロンプト) 内から、次のように「JS/VBS」スクリプトを呼び出します。

cscript //nologo urls.vbs
cscript //nologo urls.js


URL が頻繁に変更されない場合:

2) バッチ スクリプトで"JS/VBS"スクリプトをオンザフライで記述し、それを呼び出すことができます。


URL が毎回異なる可能性がある場合:

3) 「JS/VBS」スクリプト (以下) を使用し、開くページの URL をコマンド ライン引数として渡します。

JavaScript "urls.js"
のような名前のファイルを作成します:

var navOpenInNewWindow = 0x1;
var navOpenInNewTab = 0x800;
var navOpenInBackgroundTab = 0x1000;

var intLoop = 0;
var navFlags = navOpenInBackgroundTab;
var objIE;
var intArgsLength = WScript.Arguments.Length;

    if (intArgsLength == 0) {

        WScript.Echo("Missing parameters");
        WScript.Quit(1);

    }

    objIE = new ActiveXObject("InternetExplorer.Application");
    objIE.Navigate2(WScript.Arguments(0));

    for (intLoop=1;intLoop<intArgsLength;intLoop++) {

        objIE.Navigate2(WScript.Arguments(intLoop), navFlags);

    }

    objIE.Visible = true;
    objIE = null;


VB スクリプト"urls.vbs"
のような名前のファイルを作成します。

Option Explicit

Const navOpenInNewWindow = &h1
Const navOpenInNewTab = &h800
Const navOpenInBackgroundTab = &h1000

Dim intLoop
Dim navFlags      : navFlags = navOpenInBackgroundTab
Dim objIE

    If WScript.Arguments.Count = 0 Then

        WScript.Echo "Missing parameters"
        WScript.Quit(1)

    End If

    set objIE = CreateObject("InternetExplorer.Application")
    objIE.Navigate2 WScript.Arguments(0)

    For intLoop = 1 to (WScript.Arguments.Count-1)

        objIE.Navigate2 WScript.Arguments(intLoop), navFlags

    Next

    objIE.Visible = True
    set objIE = Nothing


スクリプトがパラメータなしで呼び出された場合、これらはを返します。%errorlevel%=1それ以外の場合は を返し%errorlevel%=0ます。URL の「有効性」または「可用性」に関するチェックは行われません。


バッチ スクリプト (またはコマンド プロンプト) 内から、次のように「JS/VBS」スクリプトを呼び出します。

cscript //nologo urls.js "http://bing.com/" "http://google.com/" "http://msn.com/" "http://yahoo.com/"
cscript //nologo urls.vbs "http://bing.com/" "http://google.com/" "http://msn.com/" "http://yahoo.com/"

あるいは:

cscript //nologo urls.js "bing.com" "google.com" "msn.com" "yahoo.com"
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"


何らかの理由で、代わりに「wscript」を使用してこれらを実行したい場合は、「start /w」を使用することを忘れないでください。これにより、終了コード (%errorlevel%) がバッチ スクリプトに返されます。

start /w "" wscript //nologo urls.js "url1" "url2" ...
start /w "" wscript //nologo urls.vbs "url1" "url2" ...


編集: 2016 年 9 月 21 日

私の解決策が複雑すぎるというコメントがありました。同意しません。JavaScriptソリューション、またはソリューション (両方ではない) を選択するVB Scriptと、実際のコードはそれぞれ約 10 行 (エラー チェック/レポートを削除すると少なくなります) に加えて、定数と変数を初期化するための数行になります。

(JS または VB) を決定したら、そのスクリプトを1 回記述し、次のように、いつでも使用したいとき batchに を渡してからそのスクリプトを呼び出します。URLs

cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"

私がこの回答を書いた理由は、次の条件に応じて、一部の人には機能する他のすべての回答が他の人には機能しないためです。

  1. 「ポップアップを新しいタブで開く」、「現在/新しいウィンドウ/タブで開く」などの現在の Internet Explorer の設定...一般的なブラウジングに適した方法でこれらの設定を既に設定していると仮定すると、ほとんどの人はそれを見つけるでしょう。スクリプトを機能させるために、これらの設定を前後に変更することは望ましくありません。
  2. それらの動作は、「新しい」リンクが開かれる前にすでに開いている IE ウィンドウがあったかどうかによって、一貫性がありません (可能性があります)。すでに開いている IE ウィンドウ (おそらく多くのタブが開いている) がある場合、すべての新しいタブもそこに追加されます。これは望ましくない場合があります。

私が提供したソリューションにはこれらの問題はなく、IE の設定や既存の IE Windows に関係なく、同じように動作するはずです。(これについて間違っている場合はお知らせください。対処しようとします。)

于 2014-08-06T19:58:33.853 に答える
4

もちろん、これは古い投稿ですが、検索エンジンで見つけた人向けです。

別の解決策は、IE9以降でこのように実行することです

iexplore.exe" -noframemerging http://google.com
iexplore.exe" -noframemerging http://gmail.com

-noframemergingIEを独立して実行することを意味します。たとえば、2 つのブラウザを実行して異なるユーザー名でログインする場合、2 つの IE を実行するだけでは機能しません。しかし、それで-noframemergingうまくいきます。

-noframemergingIE9以降で動作し、IE8などの初期バージョンでは-nomerge

通常、このrun_ie.batのような1つのバットファイルを作成します

"c:\Program Files (x86)\Internet Explorer\iexplore.exe" -noframemerging %1

このrun_2_ie.batのような別のバットファイルを作成します

start run_ie.bat http://google.com
start run_ie.bat http://yahoo.com
于 2015-02-12T10:47:59.203 に答える
1

これは私のために働いた:

start /d IEXPLORE.EXE www.google.com
start /d IEXPLORE.EXE www.yahoo.com

しかし、何らかの理由で代わりに Firefox でそれらを開いた?!?

これを試してみましたが、サイトが 2 つの異なるウィンドウで開かれるだけでした。

start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.yahoo.com
于 2010-04-21T13:34:28.420 に答える
0

ありがとうマルセロ。これは私にとってはうまくいきました。新しい IE ウィンドウを開き、その中で 2 つのタブを開きたかったので、コードを変更しました。

start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL 
START /d iexplore.exe website
于 2010-10-21T18:18:57.013 に答える
0

これを試して、最初のプロセスが開始するのに十分な時間を確保してください..そうしないと、2番目のプロセスを実行したときに最初のプロセスがまだ実行されていないため、2つのプロセスが生成されます...これは、コンピューターが速すぎる場合に発生する可能性があります..

@echo off
start /d iexplore.exe http://google.com
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe blablabla

blablabla を別のアドレスに置き換えます

于 2010-09-11T04:06:40.307 に答える
0

IE のオプションには、新しいリンクを既存のウィンドウで開くか新しいウィンドウで開くかを制御する設定があります。コマンドラインから制御できるかどうかはわかりませんが、このオプションを変更するだけで十分かもしれません。

IE7では、オプションが「ショートカットを起動するためにウィンドウを再利用する(タブブラウジングが無効になっている場合)」のようです。

于 2008-10-09T19:51:35.610 に答える