您可以使用这两个脚本中的任何一个在(单个)新 IE 窗口中的单独选项卡中打开 URL。您可以从批处理脚本中(或在命令提示符处)调用这些脚本中的任何一个:
JavaScript
创建一个名称如下的文件:“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 脚本
创建一个名称如下的文件:“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
一旦你决定了"JavaScript"或"VB Script",你有几个选择:
如果您的网址是静态的:
1)您可以编写“JS/VBS”脚本文件(上图),然后从批处理脚本中调用它。
从批处理脚本(或命令提示符)中,调用“JS/VBS”脚本,如下所示:
cscript //nologo urls.vbs
cscript //nologo urls.js
如果 URL 不经常更改:
2)您可以让批处理脚本即时编写“JS/VBS”脚本,然后调用它。
如果 URL 每次都不同:
3) 使用“JS/VBS”脚本(如下)并传递要打开的页面的 URL 作为命令行参数:
JavaScript
创建一个名称如下的文件:“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 脚本
创建一个名称如下的文件:“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
如果脚本在没有任何参数的情况下被调用,这些将返回%errorlevel%=1
,否则它们将返回%errorlevel%=0
。不对任何 URL 的“有效性”或“可用性”进行检查。
从批处理脚本(或命令提示符)中,调用“JS/VBS”脚本,如下所示:
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"
如果出于某种原因,您想使用“wscript”来运行它们,请记住使用“start /w”,这样退出代码 (%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"
我写这个答案的原因是因为所有其他对某些人有用的答案对其他人无效,具体取决于:
- 当前 Internet Explorer 设置“在新选项卡中打开弹出窗口”、“在当前/新窗口/选项卡中打开”等...假设您已经将这些设置设置为您喜欢的一般浏览方式,大多数人会发现它不希望来回更改这些设置以使脚本正常工作。
- 它们的行为(可能)不一致,具体取决于在打开“新”链接之前是否已经打开了 IE 窗口。如果已经打开了一个 IE 窗口(可能有许多打开的选项卡),那么所有新选项卡也会添加到那里。这可能不是所希望的。
我提供的解决方案不存在这些问题,并且无论任何 IE 设置或任何现有的 IE 窗口如何,其行为都应该相同。(如果我对此有误,请告诉我,我会尽力解决。)