web-dev-qa-db-fra.com

Comment lancer plusieurs fenêtres/onglets Internet Explorer à partir d'un fichier de commandes?

Je souhaite qu'un fichier de commandes lance deux programmes distincts, puis ferme la fenêtre de ligne de commande. En fait, pour clarifier les choses, je lance Internet Explorer avec deux URL différentes.

Jusqu'à présent, j'ai quelque chose comme ça:

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

Ce que je reçois est une instance d'Internet Explorer avec uniquement la deuxième URL chargée. Semble le second remplace le second. Il semble que je me souvienne d'une syntaxe dans laquelle je chargerais une nouvelle fenêtre de ligne de commande et transmettrais la commande à exécuter lors du chargement, sans trouver la référence.

La deuxième partie de la question est la suivante: qu’est-ce qu’une bonne URL de référence à conserver pendant les périodes où vous avez besoin d’écrire un fichier de commandes rapide?

Edit: J'ai marqué une réponse, car cela fonctionne. J'ai maintenant deux fenêtres ouvertes, une pour chaque URL. (merci!) Ce qui est amusant, c'est que sans l'approche/d qui utilise ma syntaxe d'origine, j'obtiens des résultats différents selon que je dispose ou non d'une instance Internet Explorer préexistante. 

  • Si je le fais, je reçois deux nouveaux onglets pour my deux URL (sweet!) 
  • Sinon, je ne reçois qu'un dernier onglet pour la deuxième URL que j'ai transmise.
18
TheZenker

Essayez ceci dans votre fichier batch:

@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
36
Rodger Cooley

Vous pouvez utiliser l'un ou l'autre de ces scripts pour ouvrir les URL dans des onglets distincts dans une nouvelle (seule) fenêtre IE. Vous pouvez appeler l'un de ces scripts à partir de votre script de traitement par lots (ou à l'invite de commande):

JavaScript
Créez un fichier avec un nom comme: "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
Créez un fichier avec un nom comme: "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


Une fois que vous avez choisi "JavaScript" ou "VB Script" , vous avez plusieurs choix:

Si vos URL sont statiques: 

1) Vous pouvez écrire le fichier de script "JS/VBS" (ci-dessus), puis l’appeler à partir d’un script batch. 

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

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


Si les URL changent peu souvent:

2) Vous pouvez demander au script de traitement par lots d'écrire le script "JS/VBS" à la volée, puis de l'appeler. 


Si les URL peuvent être différentes à chaque fois:

3) Utilisez le "JS/VBS" scripts (ci-dessous) et transmettez les URL des pages à ouvrir en tant qu'arguments de ligne de commande: 

JavaScript
Créez un fichier avec un nom comme: "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
Créez un fichier avec un nom comme: "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 le script est appelé sans aucun paramètre, ceux-ci renverront%errorlevel%=1, sinon ils renverront%errorlevel%=0. Aucune vérification n'est effectuée en ce qui concerne la "validité" ou la "disponibilité" de l'une quelconque des URL.


Depuis le script de commandes (ou l'invite de commande), appelez le "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 même:

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 souhaitez les exécuter avec "wscript", pensez à utiliser "start/w" pour que les codes de sortie (% errorlevel%) soient renvoyés à votre script de traitement par lots:

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


Edit: 21-Sep-2016

Il a été commenté que ma solution est trop compliquée. Je ne suis pas d'accord. Vous choisissez la solution JavaScript,oula solution VB Script (pas les deux), et chacune ne représente qu'environ 10 lignes de code (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 , puis vous appelez ce script à partir de batch, en passant la URLs, à tout moment, par exemple: 

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, selon: 

  1. Les paramètres actuels d'Internet Explorer pour "ouvrir les fenêtres contextuelles dans un nouvel onglet", "ouvrir dans la fenêtre actuelle/nouvelle fenêtre/onglet", etc ... En supposant que vous ayez déjà ces paramètres définis pour votre navigation générale, la plupart des gens le trouveraient il n'est pas souhaitable que ces paramètres soient modifiés pour que le script fonctionne.
  2. Leur comportement est (peut être) incohérent selon qu’il existe ou non une fenêtre IE déjà ouverte avant l’ouverture des "nouveaux" liens. S'il y avait une fenêtre IE (peut-être avec plusieurs onglets ouverts) déjà ouverte, tous les nouveaux onglets y seraient également ajoutés. Cela pourrait ne pas être désiré. 

La solution que j'ai fournie ne présente pas ces problèmes et doit se comporter de la même manière, quels que soient les paramètres IE ou les fenêtres IE existantes. (S'il vous plaît, laissez-moi savoir si je me trompe et j'essaierai d'y répondre.)

6
Kevin Fegan

Merci pour le tuyau Rodger.

Pour moi, cela a fonctionné 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 les popups dans un nouvel onglet
  • un nouvel onglet dans la fenêtre en cours

[email protected]

4
Marcelo

Bien sûr, il s’agit d’un ancien message, mais ce n’est que pour les gens comment le trouver grâce au moteur de recherche.

Une autre solution consiste à l'exécuter comme ceci pour IE9 et les versions ultérieures.

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

-noframemerging signifie que vous exécutez IE indépendamment. Par exemple, si vous souhaitez exécuter 2 navigateurs et vous connecter avec un nom d'utilisateur différent, cela ne fonctionnera pas si vous exécutez simplement 2 IE. mais avec noframemerging cela fonctionnera. -noframemerging fonctionne pour IE9 et les versions ultérieures. Pour les versions antérieures telles que IE8, il s'agit de -nomerge.

d'habitude je crée 1 mais le fichier comme ceci run_ie.bat

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

et je crée un autre fichier bat comme celui-ci run_2_ie.bat

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

Essayez ceci afin de laisser assez de temps au premier processus pour commencer .. sinon cela engendrera 2 processus car le premier ne fonctionne toujours pas lorsque vous exécutez le second ... Cela peut arriver 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
Marcelo

Merci Marcelo. Cela a fonctionné pour moi. Je voulais ouvrir une nouvelle fenêtre IE et ouvrir deux onglets afin de modifier le code:

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

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é cela mais cela 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
Sam M

Il existe un paramètre dans les options IE qui contrôle si les nouveaux liens doivent être ouverts dans une fenêtre existante ou dans une nouvelle fenêtre. Je ne sais pas si vous pouvez le contrôler depuis la ligne de commande, mais changer cette option vous suffirait peut-être.

Dans IE7, il semble que l'option "Réutilise les fenêtres pour lancer les raccourcis (lorsque la navigation par onglets est désactivée)".

0
Daniel Plaisted