Ответ 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
Я бы хотел, чтобы командный файл запускал две отдельные программы, а затем закрыл окно командной строки. На самом деле, чтобы уточнить, я запускаю Internet Explorer с двумя разными URL-адресами.
До сих пор у меня есть что-то вроде этого:
start "~\iexplore.exe" "url1"
start "~\iexplore.exe" "url2"
Я получаю один экземпляр Internet Explorer, загружающий только второй URL. Кажется, второй заменяет второй. Кажется, я помню синтаксис, когда я загружал новое окно командной строки и передавал команду для выполнения при загрузке, но не мог найти ссылку.
В качестве второй части вопроса: что является хорошим ссылочным URL-адресом, чтобы сохранить время, необходимое для написания быстрого пакетного файла?
Изменить: я отметил ответ, потому что он работает. Теперь у меня открыто два окна, по одному для каждого URL. (спасибо!) Самое смешное, что без подхода /d, использующего мой оригинальный синтаксис, я получаю разные результаты на основе того, есть ли у меня уже существующий экземпляр Internet Explorer.
Попробуйте это в своем пакетном файле:
@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
Спасибо за отзыв Rodger.
Для меня это работало следующим образом:
@echo off
start /d "" IEXPLORE.EXE www.google.com
start /d "" IEXPLORE.EXE www.yahoo.com
С настройками в Internet Explorer 8:
Вы можете использовать любой из этих двух скриптов, чтобы открыть 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" ...
Был комментарий, что мое решение слишком сложно. Я не согласен. Вы выбираете решение JavaScript
, или решение VB Script
(не оба), и каждый из них составляет всего около 10 строк фактического кода (меньше, если вы устраняете проверку ошибок/отчетность), плюс несколько строк для инициализации констант и переменных.
После того, как вы решили (JS или VB), вы пишете, что script один раз, а затем вы вызываете это script из batch
, передавая URLs
, в любое время, когда вы хотите использовать его, например:
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
Причина, по которой я написал этот ответ, состоит в том, что все другие ответы, которые работают для некоторых людей, не будут работать для других, в зависимости от:
Решение, которое я предоставил, не имеет этих проблем и должно вести себя одинаково независимо от любых настроек IE или любой существующей IE Windows. (Пожалуйста, дайте мне знать, если я ошибаюсь в этом, и я попытаюсь обратиться к нему.)
Конечно, это старый пост, но только для людей, как найти его через поисковую систему.
Еще одно решение - запустить его, как это для 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
В настройках IE есть параметр, который определяет, следует ли открывать новые ссылки в существующем окне или в новом окне. Я не уверен, что вы можете управлять им из командной строки, но, возможно, изменить этот параметр будет достаточно для вас.
В IE7 он выглядит так: "Повторное использование окон для запуска ярлыков (когда просмотр с вкладками отключен)".
Это сработало для меня:
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
Попробуйте это, чтобы вы разрешили достаточно времени для запуска первого процесса.. иначе он будет порождать 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 другим адресом
Спасибо Марсело. Это сработало для меня. Я хотел открыть новое окно IE и открыть две вкладки, поэтому я изменил код:
start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe website