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.
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
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:
- 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.
- 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.)
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
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
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é)".
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
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
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