internet-explorer - start - ejecutar iexplorer cmd
¿Cómo abrir múltiples ventanas/pestañas de Internet Explorer desde un archivo por lotes? (8)
Me gustaría que un archivo por lotes inicie dos programas separados y luego cierre la ventana de la línea de comando. En realidad, para aclarar, estoy lanzando Internet Explorer con dos URL diferentes.
Hasta ahora tengo algo como esto:
start "~/iexplore.exe" "url1"
start "~/iexplore.exe" "url2"
Lo que obtengo es una instancia de Internet Explorer con solo la segunda URL cargada. Parece que el segundo está reemplazando al segundo. Me parece recordar una sintaxis donde cargaría una nueva ventana de línea de comando y pasaría el comando para ejecutar en carga, pero no puedo encontrar la referencia.
Como segunda parte de la pregunta: ¿cuál es una buena URL de referencia para guardar para los tiempos que necesita para escribir un archivo de lote rápido?
Editar: he marcado una respuesta, porque funciona. Ahora tengo dos ventanas abiertas, una para cada URL. (¡gracias!) Lo curioso es que sin el enfoque / d utilizando mi sintaxis original obtengo resultados diferentes según tenga abierta una instancia preexistente de Internet Explorer.
- Si lo hago, obtengo dos pestañas nuevas para mis dos URL (¡dulce!)
- Si no, obtengo solo una pestaña final para la segunda URL que pasé.
Hay una configuración en las opciones de IE que controla si debe abrir nuevos enlaces en una ventana existente o en una nueva ventana. No estoy seguro de si puedes controlarlo desde la línea de comandos, pero tal vez cambiar esta opción sea suficiente para ti.
En IE7 parece que la opción es "Reutilizar ventanas para iniciar accesos directos (cuando la exploración con pestañas está deshabilitada)".
Prueba esto en tu archivo por lotes:
@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
Esto funcionó para mí:
start /d IEXPLORE.EXE www.google.com
start /d IEXPLORE.EXE www.yahoo.com
Pero, por alguna razón, ¿los abriste en Firefox?
Intenté esto pero me abrió sitios en dos ventanas diferentes:
start /d "C:/Program Files/Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:/Program Files/Internet Explorer" IEXPLORE.EXE www.yahoo.com
Gracias por el consejo Rodger.
Para mí funcionó de la siguiente manera:
@echo off
start /d "" IEXPLORE.EXE www.google.com
start /d "" IEXPLORE.EXE www.yahoo.com
Con la configuración en Internet Explorer 8:
- siempre abre ventanas emergentes en una nueva pestaña
- una nueva pestaña en la ventana actual
Gracias Marcelo. Esto funcionó para mí. Quería abrir una nueva ventana IE y abrir dos pestañas, así que modifiqué el código:
start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe website
Intente esto para que tenga tiempo suficiente para que comience el primer proceso ... de lo contrario generará 2 procesos porque el primero no se está ejecutando cuando ejecuta el segundo ... Esto puede suceder si su computadora es demasiado rápida ...
@echo off
start /d iexplore.exe http://google.com
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe blablabla
reemplazar blablabla con otra dirección
Por supuesto, es una publicación anterior, pero solo para las personas cómo la encontrará a través del motor de búsqueda.
Otra solución es ejecutarlo así para IE9 y posterior
iexplore.exe" -noframemerging http://google.com
iexplore.exe" -noframemerging http://gmail.com
-noframemerging significa ejecutar IE de forma independiente. Por ejemplo, si desea ejecutar el navegador 2 e iniciar sesión como nombre de usuario diferente, no funcionará si solo ejecuta 2 IE. pero con la opción de "no fusionar", funcionará. -noframemerging funciona para IE9 y versiones posteriores, para versiones anteriores como IE8 es -nomerge
generalmente creo 1 pero archivo como este run_ie.bat
"c:/Program Files (x86)/Internet Explorer/iexplore.exe" -noframemerging %1
y creo otro archivo bat como este run_2_ie.bat
start run_ie.bat http://google.com
start run_ie.bat http://yahoo.com
Puede usar cualquiera de estos dos scripts para abrir las URL en pestañas separadas en una (única) ventana de IE. Puede llamar a cualquiera de estos scripts desde su secuencia de comandos por lotes (o en el símbolo del sistema):
JavaScript
Crea un archivo con un nombre como: "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
Crea un archivo con un nombre como: "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
Una vez que decide sobre "JavaScript" o "VB Script" , tiene algunas opciones:
Si tus URL son estáticas:
1) Puede escribir el archivo de script "JS / VBS" (arriba) y luego simplemente llamarlo desde un script por lotes.
Desde el script por lotes (o el símbolo del sistema), llame al script "JS / VBS" de la siguiente manera:
cscript //nologo urls.vbs
cscript //nologo urls.js
Si las URL cambian con poca frecuencia:
2) Puede hacer que el script por lotes escriba el script "JS / VBS" sobre la marcha y luego llamarlo.
Si las URL pueden ser diferentes cada vez:
3) Use las secuencias de comandos "JS / VBS" (abajo) y pase las URL de las páginas para abrirlas como argumentos de línea de comando:
JavaScript
Crea un archivo con un nombre como: "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
Crea un archivo con un nombre como: "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
Si se llama al script sin ningún parámetro, estos devolverán %errorlevel%=1
, de lo contrario devolverán %errorlevel%=0
. No se realiza ninguna verificación con respecto a la "validez" o "disponibilidad" de ninguna de las URL.
Desde el script por lotes (o el símbolo del sistema), llame al script "JS / VBS" de la siguiente manera:
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/"
O incluso:
cscript //nologo urls.js "bing.com" "google.com" "msn.com" "yahoo.com"
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
Si, por algún motivo, desea ejecutar estos con "wscript" en su lugar, recuerde utilizar "start / w" para que los códigos de salida (% errorlevel%) se devuelvan a su secuencia de comandos por lotes:
start /w "" wscript //nologo urls.js "url1" "url2" ...
start /w "" wscript //nologo urls.vbs "url1" "url2" ...
Edición: 21-Sep-2016
Ha habido un comentario de que mi solución es demasiado complicada. Estoy en desacuerdo. Usted elige la solución JavaScript
, o la solución VB Script
(no ambas), y cada una tiene solo unas 10 líneas de código real (menos si elimina la comprobación / informe de errores), más algunas líneas para inicializar constantes y variables.
Una vez que haya decidido (JS o VB), usted escribe ese script una vez , y luego llama al script desde un batch
, pasando las URLs
, cada vez que quiera usarlo, como:
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
La razón por la que escribí esta respuesta es porque todas las demás respuestas, que funcionan para algunas personas, no funcionarán para otros, según:
- La configuración actual de Internet Explorer para "abrir ventanas emergentes en una pestaña nueva", "abrir en ventana / pestaña actual / nueva", etc. ... Suponiendo que ya tenga esa configuración establecida como le gusta para la exploración general, la mayoría de las personas la encontrarían No es deseable cambiar esas configuraciones hacia adelante y hacia atrás para que el script funcione.
- Su comportamiento es (puede ser) inconsistente dependiendo de si ya había una ventana de IE abierta antes de que se abrieran los "nuevos" enlaces. Si ya había una ventana de IE (tal vez con muchas pestañas abiertas) abierta, entonces todas las pestañas nuevas se agregarían allí también. Esto podría no ser deseado.
La solución que proporcioné no tiene estos problemas y debería comportarse de la misma manera, independientemente de la configuración de IE o de cualquier IE de Windows existente. (Por favor, avíseme si me equivoco al respecto y trataré de abordarlo).