Как запустить несколько окон/вкладков Internet Explorer из пакетного файла?

Я бы хотел, чтобы командный файл запускал две отдельные программы, а затем закрыл окно командной строки. На самом деле, чтобы уточнить, я запускаю Internet Explorer с двумя разными URL-адресами.

До сих пор у меня есть что-то вроде этого:

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

Я получаю один экземпляр Internet Explorer, загружающий только второй URL. Кажется, второй заменяет второй. Кажется, я помню синтаксис, когда я загружал новое окно командной строки и передавал команду для выполнения при загрузке, но не мог найти ссылку.

В качестве второй части вопроса: что является хорошим ссылочным URL-адресом, чтобы сохранить время, необходимое для написания быстрого пакетного файла?

Изменить: я отметил ответ, потому что он работает. Теперь у меня открыто два окна, по одному для каждого URL. (спасибо!) Самое смешное, что без подхода /d, использующего мой оригинальный синтаксис, я получаю разные результаты на основе того, есть ли у меня уже существующий экземпляр Internet Explorer.

  • Если я сделаю, я добавлю две новые вкладки для мои два URL (сладкий!)
  • Если нет, я получаю только одну заключительную вкладку для второго URL, в который я прошел.

Ответы

Ответ 1

Попробуйте это в своем пакетном файле:

@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

Ответ 2

Спасибо за отзыв Rodger.

Для меня это работало следующим образом:

@echo off

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

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

С настройками в Internet Explorer 8:

  • всегда открывать всплывающие окна на новой вкладке
  • новая вкладка в текущем окне

[email protected]

Ответ 3

Вы можете использовать любой из этих двух скриптов, чтобы открыть URL-адреса на отдельных вкладках в одном (одном) новом окне IE. Вы можете вызвать любой из этих скриптов из вашей партии script (или в командной строке):

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 Script
Создайте файл с именем вроде: "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" script (см. выше), а затем просто вызвать его из пакета script.

Внутри пакета script (или командной строки) вызовите "JS/VBS" script следующим образом:

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


Если URL-адреса изменяются нечасто:

2) У вас может быть пакет script записать "JS/VBS" script на лету, а затем вызвать его.


Если 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 Script
Создайте файл с именем вроде: "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


Если script вызывается без каких-либо параметров, они возвращают %errorlevel%=1, в противном случае они вернут %errorlevel%=0. Проверка не выполняется в отношении "действительности" или "доступности" любого из URL-адресов.


Изнутри пакета script (или командной строки) вызовите "JS/VBS" script следующим образом:

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%) будут возвращены в ваш пакет script:

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


Изменить: 21-сент.-2016

Был комментарий, что мое решение слишком сложно. Я не согласен. Вы выбираете решение JavaScript, или решение VB Script (не оба), и каждый из них составляет всего около 10 строк фактического кода (меньше, если вы устраняете проверку ошибок/отчетность), плюс несколько строк для инициализации констант и переменных.

После того, как вы решили (JS или VB), вы пишете, что script один раз, а затем вы вызываете это script из batch, передавая URLs, в любое время, когда вы хотите использовать его, например:

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

Причина, по которой я написал этот ответ, состоит в том, что все другие ответы, которые работают для некоторых людей, не будут работать для других, в зависимости от:

  • Текущие настройки Internet Explorer для "всплывающих всплывающих окон на новой вкладке", "открыть в текущем/новом окне/вкладке" и т.д.) Предполагая, что у вас уже установлены эти настройки, как вам нравится для общего просмотра, большинство людей было бы нежелательно изменять эти настройки взад и вперед, чтобы сделать работу script.
  • Их поведение (может быть) несовместимо в зависимости от того, было ли открыто окно IE до открытия "новых" ссылок. Если бы окно IE (возможно, со многими открытыми вкладками) уже было открыто, все новые вкладки также были добавлены. Это может быть нежелательно.

Решение, которое я предоставил, не имеет этих проблем и должно вести себя одинаково независимо от любых настроек IE или любой существующей IE Windows. (Пожалуйста, дайте мне знать, если я ошибаюсь в этом, и я попытаюсь обратиться к нему.)

Ответ 4

Конечно, это старый пост, но только для людей, как найти его через поисковую систему.

Еще одно решение - запустить его, как это для IE9 и более поздних версий

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

-noframemerging означает запуск IE независимо. Например, вы хотите запустить 2 браузера и войти в систему как другое имя пользователя, это не сработает, если вы просто запустите 2 IE. но с -noframemerging он будет работать. -noframemerging работает для IE9 и более поздних версий, для ранних версий, таких как IE8, это -nomerge

Обычно я создаю 1, но файл вроде этого run_ie.bat

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

и я создаю еще один файл bat, как этот run_2_ie.bat

start run_ie.bat http://google.com
start run_ie.bat http://yahoo.com

Ответ 5

В настройках IE есть параметр, который определяет, следует ли открывать новые ссылки в существующем окне или в новом окне. Я не уверен, что вы можете управлять им из командной строки, но, возможно, изменить этот параметр будет достаточно для вас.

В IE7 он выглядит так: "Повторное использование окон для запуска ярлыков (когда просмотр с вкладками отключен)".

Ответ 6

Это сработало для меня:

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

Но почему-то они открылись в Firefox вместо?!?

Я попробовал это, но он просто открыл сайты в двух разных окнах:

start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.yahoo.com

Ответ 7

Попробуйте это, чтобы вы разрешили достаточно времени для запуска первого процесса.. иначе он будет порождать 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 другим адресом

Ответ 8

Спасибо Марсело. Это сработало для меня. Я хотел открыть новое окно IE и открыть две вкладки, поэтому я изменил код:

start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL 
START /d iexplore.exe website