我想要一个批处理文件来启动两个单独的程序然后关闭命令行窗口.实际上,为了澄清,我正在使用两个不同的URL启动Internet Explorer.
到目前为止,我有这样的事情:
start "~\iexplore.exe" "url1" start "~\iexplore.exe" "url2"
我得到的是Internet Explorer的一个实例,只加载了第二个URL.似乎第二个正在取代第二个.我似乎记得一种语法,我将加载一个新的命令行窗口并传递命令以在加载时执行,但无法找到引用.
作为问题的第二部分:什么是一个很好的参考URL,以保持您编写快速批处理文件所需的时间?
编辑:我已经标记了答案,因为它确实有效.我现在打开两个窗口,每个URL一个.(谢谢!)有趣的是,如果没有使用原始语法的/ d方法,我会根据是否打开预先存在的Internet Explorer实例得到不同的结果.
如果我这样做,我会为我的两个网址添加两个新标签(甜蜜!)
如果不是,我只获得传入的第二个URL的最终选项卡.
Rodger Coole.. 39
在批处理文件中尝试此操作:
@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
The proposed answer by Rodger did not work for me. It does open the URL in Internet Explorer, but in my case (with IE 9) it still opens a new window each time it is called, even if I have the IE options set to open links from other programs in a new tab in the current window. :( (5认同)
Kevin Fegan.. 6
您可以使用这两个脚本中的任何一个在(单个)新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脚本",你有几个选择:
如果您的网址是静态的:
1)您可以编写"JS/VBS"脚本文件(上面),然后从批处理脚本中调用它.
在批处理脚本(或命令提示符)中,调用"JS/VBS"脚本,如下所示:
cscript //nologo urls.vbs cscript //nologo urls.js
如果网址不经常更改:
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
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 Windows.(如果我错了,请告诉我,我会尽力解决.)
1> Rodger Coole..:在批处理文件中尝试此操作:
@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
The proposed answer by Rodger did not work for me. It does open the URL in Internet Explorer, but in my case (with IE 9) it still opens a new window each time it is called, even if I have the IE options set to open links from other programs in a new tab in the current window. :(
2> Kevin Fegan..:您可以使用这两个脚本中的任何一个在(单个)新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脚本",你有几个选择:如果您的网址是静态的:
1)您可以编写"JS/VBS"脚本文件(上面),然后从批处理脚本中调用它.
在批处理脚本(或命令提示符)中,调用"JS/VBS"脚本,如下所示:
cscript //nologo urls.vbs cscript //nologo urls.js
如果网址不经常更改: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
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 Windows.(如果我错了,请告诉我,我会尽力解决.)
3> 小智..:感谢小费罗杰。
对我来说,它的工作原理如下:
@echo off start /d "" IEXPLORE.EXE www.google.com start /d "" IEXPLORE.EXE www.yahoo.com使用Internet Explorer 8中的设置:
总是在新标签页中打开弹出窗口
当前窗口中的新标签页
marcelo_linhares@hotmail.com