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