Comment lancer de multiples fenêtres/onglets D'Internet Explorer à partir d'un fichier batch?

je voudrais un fichier batch pour lancer deux programmes séparés puis avoir la fenêtre de ligne de commande fermée. En fait, pour clarifier, je lance Internet Explorer avec deux URLs différentes.

jusqu'à présent, j'ai quelque chose comme ceci:

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

ce que j'obtiens est une instance D'Internet Explorer avec seulement la deuxième URL chargée. Il semble que le second remplace le second. Je semble me souvenir d'une syntaxe où je chargerais une nouvelle fenêtre de ligne de commande et passer la commande à exécuter sur charge, mais je ne trouve pas la référence.

seconde partie de la question: qu'est ce qu'une bonne URL de référence à conserver pour les fois où vous avez besoin d'écrire un petit fichier batch?

Edit: j'ai marqué une réponse, parce que ça marche. J'ai maintenant deux fenêtres ouvertes, une pour chaque URL. (merci! Ce qui est drôle, c'est que sans l'approche /d utilisant ma syntaxe originale, j'obtiens des résultats différents selon que j'ai ouvert ou non une instance Internet Explorer préexistante.

  • Si je puis-je obtenir deux nouveaux onglets ajoutés pour mes deux Url (doux!)
  • si ce n'est pas le cas, je n'obtiens qu'un seul onglet final pour la deuxième URL que j'ai passée.
17
demandé sur Peter Mortensen 2008-10-09 23:36:22

8 réponses

Essayez ceci dans votre fichier de commandes:

@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
34
répondu Rodger Cooley 2009-10-10 12:25:21

vous pouvez utiliser l'un ou l'autre de ces deux scripts pour ouvrir les URLs dans des onglets séparés dans une (simple) nouvelle fenêtre IE. Vous pouvez appeler l'un ou l'autre de ces scripts à partir de votre script batch (ou à l'invite de commande):

JavaScript

Créer un fichier avec un nom du genre: "url.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 VB

Créer un fichier avec un nom du genre: "url.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



Une fois que vous décidez sur "JavaScript" ou "VB Script", vous avez plusieurs choix:

si vos URL sont statiques:

1) Vous pouvez écrire le "JS/VBS" script file (ci-dessus) et ensuite il suffit de l'appeler à partir d'un script batch.

à partir du script de traitement par lots (ou de l'invite de commande), appelez le "JS/VBS" script comme ceci:

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



Si les URLs changent rarement:

2) Vous pouvez faire écrire le "JS/VBS" script à la volée et ensuite l'appeler.



Si les Url peuvent être différents à chaque fois:

3) Utilisez le "JS/VBS" scripts (ci-dessous) et passer les URLs des pages à ouvrir comme arguments de ligne de commande:

JavaScript

Créer un fichier avec un nom du genre: "url.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;



Script VB

Créer un fichier avec un nom du genre: "url.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 le script est appelé sans aucun paramètre, ceux-ci retourneront %errorlevel%=1, sinon ils seront de retour %errorlevel%=0. Aucune vérification n'est à faire sur la "validité" ou "disponibilité" de l'Url.



À partir du script batch (ou de l'invite de commande), appelez "JS/VBS" script comme ceci:

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/"

OU encore:

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, pour une raison quelconque, vous voulez les exécuter avec "wscript" à la place, n'oubliez pas d'utiliser "start / w" de sorte que les codes de sortie (%errorlevel%) seront retournés à votre lot script:

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


Edit: 21-sept-2016

il y a eu un commentaire disant que ma solution est trop compliquée. Je suis en désaccord. À vous de choisir le JavaScript solution,ouVB Script solution (pas les deux), et chacune n'est qu'environ 10 lignes de code réel (moins si vous éliminez le contrôle/rapport d'erreur), plus quelques lignes pour initialiser les constantes et les variables.

une fois que vous avez décidé (JS ou VB), vous écrivez ce script une fois, et puis vous appelez le script à partir de batch, en passant le URLs, n'importe quand vous voulez l'utiliser, de la forme:

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

la raison pour laquelle j'ai écrit cette réponse, est que toutes les autres réponses, qui fonctionnent pour certaines personnes, ne fonctionneront pas pour d'autres, en fonction de:

  1. les paramètres actuels D'Internet Explorer pour "ouvrir les popups dans un nouvel onglet", "Ouvrir dans Courant/nouvelle fenêtre/onglet", etc... En supposant que tu sois déjà avoir ces paramètres définir comment vous les aimez pour la navigation générale, la plupart des gens trouveraient qu'il n'est pas souhaitable d'avoir changer ces paramètres en arrière et en avant afin de faire le script fonctionne.
  2. leur comportement est (peut être) incohérent selon qu'il y avait ou non une fenêtre IE déjà ouverte avant que les "nouveaux" liens ne soient ouverts. S'il y avait une fenêtre IE (peut-être avec beaucoup d'onglets ouverts) déjà ouverte, alors tous les nouveaux onglets seraient ajoutés là aussi. Cela pourrait ne pas être désirée.

la solution que j'ai fournie n'a pas ces problèmes et devrait se comporter de la même façon, quels que soient les paramètres de L'IE ou les fenêtres de L'IE existantes. (S'il vous plaît, faites-moi savoir si je me trompe à ce sujet et je vais essayer d'y répondre.)

5
répondu Kevin Fegan 2016-09-21 10:17:36

Merci pour le tuyau Rodger.

Pour moi, il a travaillé comme ci-dessous:

@echo off

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

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

Avec les paramètres dans Internet Explorer 8:

  • toujours ouvrir des popups dans un nouvel onglet
  • un nouvel onglet dans la fenêtre en cours

marcelo_linhares@hotmail.com

4
répondu Community 2012-09-14 14:48:47

bien sûr c'est un vieux post, mais juste pour les gens comment le trouver grâce au moteur de recherche.

une autre solution est de l'exécuter comme ceci pour IE9 et plus tard

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

-noframemerging signifie Exécuter IE indépendamment. Par exemple, il vous voulez exécuter 2 navigateur et se connecter comme nom d'utilisateur différent, il ne fonctionnera pas si vous venez d'exécuter 2 IE. mais avec-noframemerging ça marchera. - noframemerging fonctionne pour IE9 et plus tard, pour les premières versions comme IE8 il est - nomerge!--4-->

habituellement je crée 1 mais fichier comme ce run_ie.chauve-souris

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

et je crée un autre fichier bat comme ce run_2_ie.chauve-souris

start run_ie.bat http://google.com
start run_ie.bat http://yahoo.com
2
répondu Zlelik 2015-02-12 10:47:59

il y a un paramètre dans les options IE qui contrôle si elle doit ouvrir de nouveaux liens dans une fenêtre existante ou dans une nouvelle fenêtre. Je ne suis pas sûr que vous puissiez le contrôler depuis la ligne de commande, mais peut-être que changer cette option vous suffira.

Dans IE7 il ressemble à l'option "Réutiliser les fenêtres pour lancer des raccourcis (lors de la navigation par onglets est désactivé)".

0
répondu Daniel Plaisted 2008-10-09 19:51:35

Cela a fonctionné pour moi:

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

mais pour une raison quelconque les a ouvert dans Firefox à la place?!?

j'ai essayé mais il a simplement ouvert des sites dans deux fenêtres différentes:

start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.yahoo.com
0
répondu Sam M 2012-02-07 18:52:51

Merci Marcelo. Cela a fonctionné pour moi. Je voulais ouvrir une nouvelle fenêtre IE et y ouvrir deux onglets, donc j'ai modifié le code:

start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL 
START /d iexplore.exe website
0
répondu Emi 2012-11-02 09:55:26

essayez ceci de façon à laisser suffisamment de temps pour que le premier processus commence.. sinon, il générera 2 processus parce que le premier n'est pas encore en cours d'exécution lorsque vous exécutez le second... Cela peut se produire si votre ordinateur est trop rapide..

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

remplacer blablabla par une autre adresse

0
répondu Marcelo 2012-12-12 17:45:27