Saltar al contenido

¿Cómo iniciar varias ventanas / pestañas de Internet Explorer desde un archivo por lotes?

Esta duda se puede solucionar de diferentes maneras, pero en este caso te damos la que para nosotros es la respuesta más completa.

Solución:

Pruebe esto en su archivo por lotes:

@echo off
start /d "C:Program FilesInternet Explorer" IEXPLORE.EXE www.google.com
start /d "C:Program FilesInternet Explorer" IEXPLORE.EXE www.yahoo.com

Puede usar cualquiera de estos dos scripts para abrir las URL en pestañas separadas en una (única) nueva ventana de IE. Puede llamar a cualquiera de estos scripts desde su script por lotes (o en el símbolo del sistema):

JavaScript

Cree 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;

Script de VB

Cree 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 decidas "JavaScript" o "VB Script", tienes algunas opciones:

Si sus URL son static:

1) Podrías escribir el "JS / VBS" archivo de script (arriba) y luego simplemente llámelo desde un script por lotes.

Desde dentro del script por lotes (o símbolo del sistema), llame al "JS / VBS" guión como este:

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 "JS / VBS" script sobre la marcha y luego llamarlo.

Si las URL pueden ser diferentes cada vez:

3) Utilice el "JS / VBS" scripts (abajo) y pase las URL de las páginas para abrir como argumentos de línea de comando:

JavaScript

Cree 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

Script de VB

Cree 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 regresarán %errorlevel%=1, de lo contrario volverán %errorlevel%=0. No se realiza ninguna comprobación con respecto a la "validez" o "disponibilidad" de ninguna de las URL.

Desde dentro del script por lotes (o símbolo del sistema), llame al "JS / VBS" guión como este:

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 alguna razón, desea ejecutarlos con "wscript" en su lugar, recuerde usar "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" ...


Editar: 21 de septiembre de 2016

Se ha comentado que mi solución es demasiado complicada. Estoy en desacuerdo. Tu eliges el JavaScript solución, o los VB Script solución (no ambos), y cada uno tiene solo unas 10 líneas de código real (menos si elimina la verificación / informe de errores), más algunas líneas para inicializar constantes y variables.

Una vez que haya decidido (JS o VB), escriba ese script una vezy luego llamas a ese script desde batch, pasando el URLs, en cualquier momento que desee 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 otras, dependiendo de:

  1. La configuración actual de Internet Explorer para "abrir ventanas emergentes en una nueva pestaña", "abrir en una ventana / pestaña actual / nueva", etc. Suponiendo que ya tiene esa configuración configurada como le gusta para la navegación general, la mayoría de la gente la encontrará. No es deseable tener que cambiar esas configuraciones de un lado a otro para que el guión funcione.
  2. 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 hubiera una ventana de IE (quizás con muchas pestañas abiertas) ya abierta, todas las pestañas nuevas también se agregarían allí. Puede que esto no sea lo 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 Windows de IE existente. (Por favor, avíseme si me equivoco al respecto e intentaré solucionarlo).

Gracias por el dato 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 de Internet Explorer 8:

  • siempre abre ventanas emergentes en una nueva pestaña
  • una nueva pestaña en la ventana actual

[email protected]

Comentarios y puntuaciones del tutorial

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *