I would like a batch file to launch two separate programs then have the command line window close. Actually, to clarify, I am launching Internet Explorer with two different URLs.
So far I have something like this:
start "~\iexplore.exe" "url1"
start "~\iexplore.exe" "url2"
What I get is one instance of Internet Explorer with only the second URL loaded. Seems the second is replacing the second. I seem to remember a syntax where I would load a new command line window and pass the command to execute on load, but can't find the reference.
As a second part of the question: what is a good reference URL to keep for the times you need to write a quick batch file?
Edit: I have marked an answer, because it does work. I now have two windows open, one for each URL. (thanks!) The funny thing is that without the /d approach using my original syntax I get different results based on whether I have a pre-existing Internet Explorer instance open.
This question is related to
internet-explorer
batch-file
Of course it is an old post but just for people how will find it through search engine.
Another solution is to run it like this for IE9 and later
iexplore.exe" -noframemerging http://google.com
iexplore.exe" -noframemerging http://gmail.com
-noframemerging means run IE independently. For example it you want to run 2 browser and login as different username it will not work if you just run 2 IE. but with -noframemerging it will work. -noframemerging works for IE9 and later, for early versions like IE8 it is -nomerge
usually I create 1 but file like this run_ie.bat
"c:\Program Files (x86)\Internet Explorer\iexplore.exe" -noframemerging %1
and I create another bat file like this run_2_ie.bat
start run_ie.bat http://google.com
start run_ie.bat http://yahoo.com
Thanks for the tip Rodger.
For me it worked as below:
@echo off
start /d "" IEXPLORE.EXE www.google.com
start /d "" IEXPLORE.EXE www.yahoo.com
With the settings in Internet Explorer 8:
Thanks Marcelo. This worked for me. I wanted to open a new IE Window and open two tabs in that so I modified the code:
start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe website
This worked for me:
start /d IEXPLORE.EXE www.google.com
start /d IEXPLORE.EXE www.yahoo.com
But for some reason opened them up in Firefox instead?!?
I tried this but it merely opened up sites in two different windows:
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.yahoo.com
Thanks Marcelo. This worked for me. I wanted to open a new IE Window and open two tabs in that so I modified the code:
start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe website
Of course it is an old post but just for people how will find it through search engine.
Another solution is to run it like this for IE9 and later
iexplore.exe" -noframemerging http://google.com
iexplore.exe" -noframemerging http://gmail.com
-noframemerging means run IE independently. For example it you want to run 2 browser and login as different username it will not work if you just run 2 IE. but with -noframemerging it will work. -noframemerging works for IE9 and later, for early versions like IE8 it is -nomerge
usually I create 1 but file like this run_ie.bat
"c:\Program Files (x86)\Internet Explorer\iexplore.exe" -noframemerging %1
and I create another bat file like this run_2_ie.bat
start run_ie.bat http://google.com
start run_ie.bat http://yahoo.com
There is a setting in the IE options that controls whether it should open new links in an existing window or in a new window. I'm not sure if you can control it from the command line but maybe changing this option would be enough for you.
In IE7 it looks like the option is "Reuse windows for launching shortcuts (when tabbed browsing is disabled)".
The top answer is almost correct, but you also need to add an ampersand at the end of each line. For example write the batch file:
start /d "~\iexplore.exe" "www.google.com" &
start /d "~\iexplore.exe" "www.yahoo.com" &
start /d "~\iexplore.exe" "www.blackholesurfer.com" &
The ampersand allows the prompt to return to the shell and launch another tab. This is a windows solution only, but the ampersand has the same effect in linux shell.
Thanks for the tip Rodger.
For me it worked as below:
@echo off
start /d "" IEXPLORE.EXE www.google.com
start /d "" IEXPLORE.EXE www.yahoo.com
With the settings in Internet Explorer 8:
The top answer is almost correct, but you also need to add an ampersand at the end of each line. For example write the batch file:
start /d "~\iexplore.exe" "www.google.com" &
start /d "~\iexplore.exe" "www.yahoo.com" &
start /d "~\iexplore.exe" "www.blackholesurfer.com" &
The ampersand allows the prompt to return to the shell and launch another tab. This is a windows solution only, but the ampersand has the same effect in linux shell.
You can use either of these two scripts to open the URLs in separate tabs in a (single) new IE window. You can call either of these scripts from within your batch script (or at the command prompt):
JavaScript
Create a file with a name like: "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
Create a file with a name like: "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
Once you decide on "JavaScript" or "VB Script", you have a few choices:
If your URLs are static:
1) You could write the "JS/VBS" script file (above) and then just call it from a batch script.
From within the batch script (or command prompt), call the "JS/VBS" script like this:
cscript //nologo urls.vbs
cscript //nologo urls.js
If the URLs change infrequently:
2) You could have the batch script write the "JS/VBS" script on the fly and then call it.
If the URLs could be different each time:
3) Use the "JS/VBS" scripts (below) and pass the URLs of the pages to open as command line arguments:
JavaScript
Create a file with a name like: "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
Create a file with a name like: "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
If the script is called without any parameters, these will return %errorlevel%=1
, otherwise they will return %errorlevel%=0
. No checking is done regarding the "validity" or "availability" of any of the URLs.
From within the batch script (or command prompt), call the "JS/VBS" script like this:
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/"
OR even:
cscript //nologo urls.js "bing.com" "google.com" "msn.com" "yahoo.com"
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
If for some reason, you wanted to run these with "wscript" instead, remember to use "start /w" so the exit codes (%errorlevel%) will be returned to your batch script:
start /w "" wscript //nologo urls.js "url1" "url2" ...
start /w "" wscript //nologo urls.vbs "url1" "url2" ...
There has been a comment that my solution is too complicated. I disagree. You pick the JavaScript
solution, or the VB Script
solution (not both), and each is only about 10 lines of actual code (less if you eliminate the error checking/reporting), plus a few lines to initialize constants and variables.
Once you have decided (JS or VB), you write that script one time, and then you call that script from batch
, passing the URLs
, anytime you want to use it, like:
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
The reason I wrote this answer, is because all the other answers, which work for some people, will fail to work for others, depending on:
The solution I provided doesn't have these issues and should behave the same, regardless of any IE Settings or any existing IE Windows. (Please let me know if I'm wrong about this and I'll try to address it.)
Try this so you allow enough time for the first process to start.. else it will spawn 2 processes because the first one is not still running when you run the second one... This can happen if your computer is too fast..
@echo off
start /d iexplore.exe http://google.com
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe blablabla
replace blablabla with another address
This worked for me:
start /d IEXPLORE.EXE www.google.com
start /d IEXPLORE.EXE www.yahoo.com
But for some reason opened them up in Firefox instead?!?
I tried this but it merely opened up sites in two different windows:
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.yahoo.com
There is a setting in the IE options that controls whether it should open new links in an existing window or in a new window. I'm not sure if you can control it from the command line but maybe changing this option would be enough for you.
In IE7 it looks like the option is "Reuse windows for launching shortcuts (when tabbed browsing is disabled)".
Try this so you allow enough time for the first process to start.. else it will spawn 2 processes because the first one is not still running when you run the second one... This can happen if your computer is too fast..
@echo off
start /d iexplore.exe http://google.com
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe blablabla
replace blablabla with another address
There is a setting in the IE options that controls whether it should open new links in an existing window or in a new window. I'm not sure if you can control it from the command line but maybe changing this option would be enough for you.
In IE7 it looks like the option is "Reuse windows for launching shortcuts (when tabbed browsing is disabled)".
There is a setting in the IE options that controls whether it should open new links in an existing window or in a new window. I'm not sure if you can control it from the command line but maybe changing this option would be enough for you.
In IE7 it looks like the option is "Reuse windows for launching shortcuts (when tabbed browsing is disabled)".
You can use either of these two scripts to open the URLs in separate tabs in a (single) new IE window. You can call either of these scripts from within your batch script (or at the command prompt):
JavaScript
Create a file with a name like: "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
Create a file with a name like: "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
Once you decide on "JavaScript" or "VB Script", you have a few choices:
If your URLs are static:
1) You could write the "JS/VBS" script file (above) and then just call it from a batch script.
From within the batch script (or command prompt), call the "JS/VBS" script like this:
cscript //nologo urls.vbs
cscript //nologo urls.js
If the URLs change infrequently:
2) You could have the batch script write the "JS/VBS" script on the fly and then call it.
If the URLs could be different each time:
3) Use the "JS/VBS" scripts (below) and pass the URLs of the pages to open as command line arguments:
JavaScript
Create a file with a name like: "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
Create a file with a name like: "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
If the script is called without any parameters, these will return %errorlevel%=1
, otherwise they will return %errorlevel%=0
. No checking is done regarding the "validity" or "availability" of any of the URLs.
From within the batch script (or command prompt), call the "JS/VBS" script like this:
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/"
OR even:
cscript //nologo urls.js "bing.com" "google.com" "msn.com" "yahoo.com"
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
If for some reason, you wanted to run these with "wscript" instead, remember to use "start /w" so the exit codes (%errorlevel%) will be returned to your batch script:
start /w "" wscript //nologo urls.js "url1" "url2" ...
start /w "" wscript //nologo urls.vbs "url1" "url2" ...
There has been a comment that my solution is too complicated. I disagree. You pick the JavaScript
solution, or the VB Script
solution (not both), and each is only about 10 lines of actual code (less if you eliminate the error checking/reporting), plus a few lines to initialize constants and variables.
Once you have decided (JS or VB), you write that script one time, and then you call that script from batch
, passing the URLs
, anytime you want to use it, like:
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
The reason I wrote this answer, is because all the other answers, which work for some people, will fail to work for others, depending on:
The solution I provided doesn't have these issues and should behave the same, regardless of any IE Settings or any existing IE Windows. (Please let me know if I'm wrong about this and I'll try to address it.)
Source: Stackoverflow.com