我想要一个批处理文件来启动两个单独的程序然后关闭命令行窗口。实际上,为了澄清,我正在使用两个不同的URL启动Internet Explorer。
到目前为止,我有这样的事情:
start "~\iexplore.exe" "url1"
start "~\iexplore.exe" "url2"
我得到的是Internet Explorer的一个实例,只加载了第二个URL。似乎第二个正在取代第二个。我似乎记得一种语法,我将加载一个新的命令行窗口并传递命令以在加载时执行,但无法找到引用。
作为问题的第二部分:在编写快速批处理文件时需要保留哪些好的参考URL?
编辑:我已经标记了答案,因为它确实有效。我现在打开两个窗口,每个URL一个。 (谢谢!)有趣的是,如果没有使用原始语法的/ d方法,我会根据是否打开预先存在的Internet Explorer实例得到不同的结果。
答案 0 :(得分:36)
在批处理文件中尝试此操作:
@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
答案 1 :(得分:6)
您可以使用这两个脚本中的任何一个在(单个)新IE窗口的单独选项卡中打开URL。您可以在批处理脚本中(或在命令提示符下)调用这些脚本中的任何一个:
<强>的JavaScript 强>
创建一个名称为的文件:&#34; urls.js&#34; :
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脚本
创建一个名称为的文件:&#34; urls.vbs&#34; :
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
一旦您决定&#34; JavaScript&#34; 或&#34; VB脚本&#34; ,您有以下几种选择:
如果您的网址是静态的:
1)您可以编写&#34; JS / VBS&#34; 脚本文件(上图),然后从批处理脚本中调用它。
在批处理脚本(或命令提示符)中,调用&#34; JS / VBS&#34; 脚本,如下所示:
cscript //nologo urls.vbs
cscript //nologo urls.js
如果网址不经常更改:
2)您可以让批处理脚本动态编写&#34; JS / VBS&#34; 脚本然后调用它。
如果每次都有不同的网址:
3)使用&#34; JS / VBS&#34; 脚本(如下)并将页面的URL传递为命令行参数:
<强>的JavaScript 强>
创建一个名称为的文件:&#34; urls.js&#34; :
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脚本
创建一个名称为的文件:&#34; urls.vbs&#34; :
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
如果在没有任何参数的情况下调用脚本,这些将返回 %errorlevel%=1
,否则它们将返回 %errorlevel%=0
。没有检查&#34;有效性&#34;或者&#34;可用性&#34;任何网址。
在批处理脚本(或命令提示符)中,调用&#34; JS / VBS&#34; 脚本,如下所示:
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/"
或者甚至:
cscript //nologo urls.js "bing.com" "google.com" "msn.com" "yahoo.com"
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
如果出于某种原因,你想用&#34; wscript&#34;相反,记得使用&#34; start / w&#34;所以退出代码(%errorlevel%)将返回到批处理脚本:
start /w "" wscript //nologo urls.js "url1" "url2" ...
start /w "" wscript //nologo urls.vbs "url1" "url2" ...
<小时/> 修改:2016年9月21日
有评论说我的解决方案太复杂了。我不同意。您选择JavaScript
解决方案, 或 VB Script
解决方案(不是两者),每个解决方案只有大约10行实际代码(如果你消除了错误检查/报告),加上几行来初始化常量和变量。
一旦你决定(JS或VB),你就编写了那个一次的脚本,然后你从batch
调用那个脚本,随时传递URLs
想要使用它,比如:
cscript //nologo urls.vbs "bing.com" "google.com" "msn.com" "yahoo.com"
我写这个答案的原因是因为所有其他答案,对一些人有用,将无法为其他人工作,具体取决于:
我提供的解决方案没有这些问题,并且应该表现相同,无论是任何IE设置还是任何现有的IE Windows。 (如果我对此错了,请告诉我,我会尽力解决。)
答案 2 :(得分:4)
感谢提示罗杰。
对我来说,它的工作原理如下:
@echo off
start /d "" IEXPLORE.EXE www.google.com
start /d "" IEXPLORE.EXE www.yahoo.com
使用Internet Explorer 8中的设置:
marcelo_linhares@hotmail.com
答案 3 :(得分:2)
当然这是一个老帖子,但只是为了人们如何通过搜索引擎找到它。
另一个解决方案是为IE9及更高版本
运行它iexplore.exe" -noframemerging http://google.com
iexplore.exe" -noframemerging http://gmail.com
-noframemerging意味着独立运行IE。例如,你想运行2个浏览器并以不同的用户名登录,如果你只运行2个IE,它就无法运行。但是使用-noframemerging它会起作用。 -noframemer适用于IE9及更高版本,对于像IE8这样的早期版本,它是-nomerge
通常我创建1但文件类似于run_ie.bat
"c:\Program Files (x86)\Internet Explorer\iexplore.exe" -noframemerging %1
我创建了另一个像这个run_2_ie.bat
的bat文件start run_ie.bat http://google.com
start run_ie.bat http://yahoo.com
答案 4 :(得分:0)
IE选项中有一个设置,用于控制是否应在现有窗口或新窗口中打开新链接。我不确定你是否可以从命令行控制它,但是改变这个选项就足够了。
在IE7中,看起来选项是“重新启动窗口以启动快捷方式(禁用选项卡式浏览时)”。
答案 5 :(得分:0)
这对我有用:
start /d IEXPLORE.EXE www.google.com
start /d IEXPLORE.EXE www.yahoo.com
但出于某种原因,却在Firefox中打开了它们?!?
我试过了,但它只是在两个不同的窗口中打开了网站:
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.google.com
start /d "C:\Program Files\Internet Explorer" IEXPLORE.EXE www.yahoo.com
答案 6 :(得分:0)
试试这个让你有足够的时间让第一个进程启动..否则它会产生2个进程,因为当你运行第二个进程时第一个进程仍然没有运行... 如果您的计算机太快,就会发生这种情况。
@echo off
start /d iexplore.exe http://google.com
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe blablabla
用另一个地址替换blablabla
答案 7 :(得分:0)
谢谢马塞洛。这对我有用。我想打开一个新的IE窗口并打开两个标签,所以我修改了代码:
start iexplore.exe website
PING 1.1.1.1 -n 1 -w 2000 >NUL
START /d iexplore.exe website
答案 8 :(得分:0)
最正确的答案几乎是正确的,但是您还需要在每行的末尾添加一个&符号。例如,编写批处理文件:
start /d "~\iexplore.exe" "www.google.com" &
start /d "~\iexplore.exe" "www.yahoo.com" &
start /d "~\iexplore.exe" "www.blackholesurfer.com" &
&符允许提示符返回外壳并启动另一个选项卡。 这仅是Windows解决方案,但是&符在linux shell中具有相同的作用。