【问题标题】:Batch script to Launch Multiple Instances of Windows Explorer at Same Location在同一位置启动多个 Windows 资源管理器实例的批处理脚本
【发布时间】:2012-09-14 15:49:38
【问题描述】:

我的 Windows XP 桌面 (LaunchWindowsExplorers.bat) 上有一个批处理脚本,它应该启动几个 Windows 资源管理器实例。

看起来像这样:

LaunchWindowsExplorers.bat

start explorer "C:\SomeDirectory" 
start explorer "C:\SomeDirectory" 

当我双击文件LaunchWindowsExplorers.bat

我希望看到

  • 在 "C:\SomeDirectory" 中打开了两个 Windows 资源管理器实例。

相反,我看到了

  • 仅在“C:\SomeDirectory”打开了一个 Windows 资源管理器实例。

我需要做什么才能让这个脚本打开两个 Windows 资源管理器实例,每个实例都在“C:\SomeDirectory”打开?

谢谢。

【问题讨论】:

    标签: windows batch-file


    【解决方案1】:

    虽然我不确定解决方案,但您是否尝试过将其更改为:
    start explorer "C:\SomeDirectory"
    start explorer "C:\AnotherDirectory"
    并检查会发生什么?
    我会假设正在发生的事情是启动资源管理器检查是否已经打开了一个资源管理器,如果这是错误的,它只会打开一个新的资源管理器(否则它只会重定向当前打开的资源管理器) .
    很抱歉,我无法提供更多帮助。

    【讨论】:

    • 感谢您的回答。是的,如果您想打开各种不同的位置,它可以正常工作。每个都在一个新实例中打开。出于某种原因,它似乎只是阻止了同一位置的两个实例。这就是我问这个问题的原因。
    • 啊,我明白了。我只是检查一下,因为我认为它可能在将其更改为“C:\AnotherDirectory”之前打开了“C:\SomeDirectory”(只留下一个资源管理器窗口)。嗯……
    • 打开多个不同的位置正是我的问题所需要的。
    【解决方案2】:

    您可以使用explorer /n,"C:\SomeDirectory"explorer /e,"C:\SomeDirectory"explorer /root,"C:\SomeDirectory"(取决于您想要的视图)。从这里获取的选项说明:http://support.microsoft.com/kb/314853

    选项功能


    /n 为默认打开一个新的单窗格窗口 选择。这通常是驱动器的根目录 Windows 安装在。如果窗口已经 打开,打开一个副本。

    /e 在默认视图中打开 Windows 资源管理器。

    /root, 打开指定对象的窗口视图。

    /select, 打开带有指定文件夹、文件、 或选择的程序。


    有趣的是,这种行为(不显示同一目录的第二个窗口)似乎特定于 XP。 Win7 只需启动资源管理器的第二个副本。我没有检查Vista。

    【讨论】:

    • 我刚刚注意到 /n 特别声明,“如果窗口已经打开,则会打开一个副本。”这看起来很完美!
    • @MattiasAndersson /n, /e, /root, 全部打开新窗口。我已经在我的答案中添加了/n,,因为事实证明它接受了一条路径,即使它没有这样记录。谢谢!
    • @wmz 谢谢。是的,这行得通。我在第二个路径前加上 /n, 以确保创建了第二个实例。
    • 我不敢相信逗号是 /root 选项的一部分 - 微软真的应该停止尝试编写软件......
    【解决方案3】:

    我建议您先尝试 wmz 的答案。我的回答是一个糟糕的、肮脏的 hack,只能作为最后的手段。

    我的示例脚本所做的是创建您要打开的文件夹的随机子文件夹,打开它,然后删除随机子文件夹并期望 Explorer 优雅地移动到父文件夹,这是您真正想要打开的文件夹。

    这太糟糕了,太糟糕了,太糟糕了,但它在我的 Win7 机器上运行。 :) 不幸的是,我没有 WinXP 机器/VM 来正确测试它,如果资源管理器将文件夹锁定为正在使用,它可能会完全失败,因为它正在显示;我不记得那是什么时候改变的。此外,这种方法需要对文件夹进行写访问,并且很容易被不幸的时机、激进的防病毒软件或任何其他随机性破坏。我已经说得够多了,但是,这有多可怕? :)

    call :ForceStartExplorerWindow .
    call :ForceStartExplorerWindow .
    call :ForceStartExplorerWindow .
    
    GOTO :EOF
    
    
    :: Pass The location to open as %1
    :ForceStartExplorerWindow
    
    SETLOCAL
    
    set __ForceStartTempDir=%1\ThisShouldNeverExist-%RANDOM%
    md %__ForceStartTempDir%
    start explorer %__ForceStartTempDir%
    
    :: Hope this wait is long enough for Explorer to finish loading it...
    ping -n 2 localhost >NUL
    
    :: Hope this rd works...
    rd %__ForceStartTempDir%
    :: FUTURE: Consider retrying upon failure.
    
    :: End of ForceStartExplorerWindow
    GOTO :EOF
    

    【讨论】:

    • 感谢您的回答。哈。我喜欢横向思考。但是,正如您所建议的,我可能会先尝试 wmz 的答案。
    • @JW: :-) 很高兴您能够正确解决问题。
    猜你喜欢
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多