2008-10-09 6 views
15

Je voudrais un fichier batch pour lancer deux programmes séparés puis fermer la fenêtre de ligne de commande. En fait, pour clarifier, je lance Internet Explorer avec deux URL différentes.Comment lancer plusieurs fenêtres/onglets Internet Explorer à partir d'un fichier batch?

Jusqu'à présent, je quelque chose comme ceci:

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

Ce que je reçois est une instance d'Internet Explorer avec seulement la deuxième URL chargée. Il semble que la seconde remplace la seconde. Il me semble me souvenir d'une syntaxe où je voudrais charger une nouvelle fenêtre de ligne de commande et passer la commande à exécuter sur load, mais je ne trouve pas la référence. Comme deuxième partie de la question: qu'est-ce qu'une bonne URL de référence à garder pour les moments où vous devez écrire un fichier batch rapide?

Modifier: J'ai marqué une réponse, parce que cela fonctionne. J'ai maintenant deux fenêtres ouvertes, une pour chaque URL. (merci!) La chose amusante est que sans l'approche/d utilisant ma syntaxe originale, j'obtiens des résultats différents selon que j'ai une instance Internet Explorer préexistante ouverte.

  • Si je fais, je reçois deux nouveaux onglets ajoutés pour mes deux URL (doux!)
  • Sinon je reçois seulement un dernier onglet pour la deuxième URL je suis passé.
+0

En outre, je pense que si vous utilisez juste cette
début http://www.google.com commencer http://www.yahoo.com
vous permettra au système de choisir le navigateur favori pour les ouvrir. (BTW, avez-vous préféré le navigateur à deux onglets/one ou le soln de deux fenêtres?) –

+0

Hmmm ... devinez commentaires n'aiment pas HTML ... –

+0

voir: https://stackoverflow.com/questions/26099153/open-tabs-in-internet-explorer-with-cmd/45808976#45808976 – vafylec

Répondre

33

Essayez 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 
+0

Que fait/d quoi? – tofutim

+0

Il a fourni le chemin de démarrage de l'exécutable. –

+5

La réponse proposée par Rodger n'a pas fonctionné pour moi. Il ouvre l'URL dans Internet Explorer, mais dans mon cas (avec IE 9) il ouvre toujours une nouvelle fenêtre chaque fois qu'il est appelé, même si j'ai les options IE définies pour ouvrir les liens d'autres programmes dans un nouvel onglet dans le fenêtre actuelle. :( –

0

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

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

4

Merci pour le conseil 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 popups ouvrir dans un nouvel onglet
  • un nouvel onglet dans la fenêtre en cours

[email protected]

0

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 ouvert dans Firefox à la place?!?

J'ai essayé mais 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 
+2

Voir 'help start' dans cmd.exe: le paramètre de l'argument'/d' est le * chemin du répertoire de départ * - c'est-à-dire, à quoi le répertoire actuel doit-il être assigné avant de lancer la commande. Ce que votre première commande dit est "Démarrez www.google.com après avoir défini le répertoire actuel sur IEXPLORE.EXE".L'utilisation de 'start' avec juste une URL lance tout ce que vous avez configuré comme votre navigateur web préféré; C'est pourquoi il a ouvert Firefox. –

0

essayer si vous laisser le temps suffisant pour le premier processus pour commencer ..sinon il engendrera 2 processus parce que le premier ne fonctionne toujours lorsque vous exécutez la seconde ... 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 avec une autre adresse

0

Merci Marcelo. Cela a fonctionné pour moi. Je voulais ouvrir une nouvelle fenêtre Internet Explorer et deux onglets ouverts dans ce donc je modifié le code:

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

Vous pouvez utiliser l'une de ces deux scripts pour ouvrir les URL dans des onglets séparés dans un (unique) nouvelle fenêtre Internet Explorer . Vous pouvez appeler l'un de ces scripts à partir de votre script batch (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 décidez sur "JavaScript" ou "VB Script", vous avez quelques choix:

Si vos URL sont statiques:

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

dans le script batch (ou invite de commande), appelez le "JS/VBS" script comme ceci:

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


Si les URL changent rarement:

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


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

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

JavaScript
Créez un fichier avec un nom tel que: "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éer 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 tous les paramètres, ils renverront %errorlevel%=1, sinon ils reviendront n %errorlevel%=0. Aucune vérification n'est effectuée concernant la «validité» ou la «disponibilité» de l'une des URL.


dans le script batch (ou 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 vouliez les exécuter avec "wscript" à la place, n'oubliez pas d'utiliser "start/w" pour que les codes de sortie (% errorlevel%) soient retournés à votre script batch:

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


Edit: 21-Sep-2016

Il y a eu un commentaire que ma solution est trop compliquée. Je ne suis pas d'accord. Vous choisissez la solution JavaScript, ou la solution VB Script (pas les deux), et chacun est seulement d'environ 10 lignes de code réel (moins si vous éliminez la vérification/rapport d'erreurs), ainsi que 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 batch, en passant le URLs, chaque fois que vous voulez l'utiliser, comme:

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

La raison pour laquelle je l'ai écrit cette réponse, est parce que toutes les autres réponses, qui travaillent pour certaines personnes, ne manqueront pas de travailler pour les autres, en fonction de:

  1. les paramètres actuels d'Internet Explorer pour « popups ouvrir dans une nouvelle ta b "," ouvrir dans current/new window/tab ", etc ... En supposant que vous ayez déjà défini ces réglages comme vous les aimez pour la navigation générale, la plupart des gens trouveraient indésirable d'avoir à changer ces paramètres avant et en arrière pour faites fonctionner le script.
  2. Leur comportement est (peut être) incohérent selon qu'il y avait ou non une fenêtre IE déjà ouverte avant l'ouverture des "nouveaux" liens. Si une fenêtre IE (peut-être avec plusieurs onglets ouverts) était déjà ouverte, tous les nouveaux onglets y seraient également ajoutés. Cela pourrait ne pas être désiré.

La solution fournie ne présente pas ces problèmes et devrait se comporter de la même manière, quels que soient les paramètres IE ou les fenêtres IE Windows existantes. (S'il vous plaît laissez-moi savoir si je me trompe à ce sujet et je vais essayer d'y remédier.)

+0

C'est trop compliqué. Vous pouvez le faire simplement dans un script batch CMD. J'ai ajouté la solution en tant que commentaire à la réponse marquée. –

+0

@TerribleTadpole - J'ai essayé votre solution-comme-commentaire, et cela n'a pas fonctionné pour moi. J'ai laissé un commentaire là avec des détails. Même si cela a fonctionné, il y a des problèmes: 1) S'il y avait une fenêtre IE ouverte (peut-être avec beaucoup d'onglets ouverts) avant la première commande 'start', tous les nouveaux onglets y seraient également ajoutés. Cela pourrait ne pas être désiré. 2) Le faire fonctionner pour ce 'lot ', probablement nécessiterait de changer les paramètres IE pour les" popups "et/ou" ouvrir dans une nouvelle fenêtre/onglet ". Ces changements ne sont pas très bien si vous avez déjà configuré IE comment vous aimez généralement travailler. –

2

Bien sûr, il s'agit d'un ancien message, mais juste pour les gens comment le trouver via le moteur de recherche.

Une autre solution consiste à exécuter comme ceci pour IE9 et plus tard

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

-noframemerging moyens IE exécuter de façon indépendante. Par exemple, vous voulez exécuter 2 navigateur et se connecter en tant que nom d'utilisateur différent, il ne fonctionnera pas si vous exécutez simplement 2 IE. mais avec -noframemerging cela fonctionnera. -noframemerging œuvres pour IE9 et plus tard, pour les premières versions comme IE8 il est -nomerge

habituellement je créer 1, mais le fichier comme ce run_ie.bat

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

et je créer un autre fichier de chauve-souris comme celui-ci run_2_ie.bat

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