【问题标题】:START command only opens new window if .EXE is NOT already runningSTART 命令仅在 .EXE 尚未运行时打开新窗口
【发布时间】:2017-12-28 18:57:50
【问题描述】:

所以我的批处理文件命令如下:

@ECHO OFF
SET link1=google.com
SET link2=google.com
SET link3=google.com
START /MAX vivaldi.exe %link1% %link2% %link3%

当我双击我的 .BAT 文件时,它只会在当前没有运行的情况下打开一个新的 vivaldi 窗口。如果我已经打开了一个 vivaldi 窗口,它只会在我已经打开的选项卡顶部的新选项卡中打开链接 1-3(如果不是,则最大化窗口)。我的印象是 START 命令应该始终在新窗口中打开 .EXE,除非设置了 /B 标志(它不是)?

【问题讨论】:

  • 毫无疑问vivaldi 是某种浏览器。在当前实例中打开新浏览器实例或新选项卡的选择是由浏览器而不是批处理做出的。在 Firefox 中,工具/选项/常规/选项卡下有一个开关 - 一个标有“当您在新选项卡中打开链接时,立即切换到它”的复选框。维瓦尔第? IDK。
  • 我的印象是 START 命令应该始终在新窗口中打开 .exe,除非设置了 /B 标志(它不是)? 不。尝试仔细阅读帮助 (start /?)。为什么要使用非正常方式来启动程序。有关如何启动程序的摘要,请参见此处。 stackoverflow.com/questions/41030190/command-to-run-a-bat-file/…
  • 哦 - 那个复选框是 Open new windows in a new tab instead 框,对不起。
  • /b 与控制台应用程序有关。它使用创建标志CREATE_NEW_PROCESS_GROUP 而不是CREATE_NEW_CONSOLE。因此控制台应用程序将继承当前控制台而不是分配新控制台。 Ctrl+C 被禁用,因为它是一个后台进程,在这种情况下,您还应该将标准输入重定向到 NUL。否则使用start /b /w(按此顺序)制作CMD [w]ait。您可以使用它让 shell 通过其 shell“应用程序路径”键按名称启动控制台应用程序,而不是搜索 PATH,或者如果您需要另一个 start 选项,例如设置 CPU 关联性。
  • 大型程序,如浏览器,几乎总是作为单例程序实现。第二次启动它时,它可以看到它已经在运行并将参数传递给第一个实例。并退出。 START 对此无能为力,这种行为纯粹是由程序本身实现的。除非程序给你一个神奇的命令行选项来抑制这种行为,你也不能。在 superuser.com 或 Vivaldi 支持论坛上提问。

标签: windows batch-file vivaldi


【解决方案1】:

将最后一行替换为:

START /MAX vivaldi.exe --user-data-dir=c:\temp %link1% %link2% %link3%

您可以创建一个专用文件夹而不是使用C:\temp,并指定该文件夹的完整路径。

--user-data-dir的使用灵感来自https://superuser.com/a/457045/122072

【讨论】:

    猜你喜欢
    • 2013-08-09
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多