如何在 Windows 中使用启动命令启动 Explorer 的新实例?

如何在 Windows 中使用启动命令启动 Explorer 的新实例?

我希望每次运行时都启动 explorer.exe 的新实例,start \\path即使同一路径已经在窗口中启动。目前它的工作方式如下:

start C:\Users

它会启动一个带有该路径的窗口

start C:\Users

它聚焦于之前打开的窗口

编辑

我想“实例”这个词不太恰当。我的意思是我想打开文件资源管理器的另一个窗口,而不是它的另一个实例。

答案1

笔记:这是一个解决方案Windows 11并已确认可以正常工作。对于 Windows 10,您需要在本答案的末尾使用不同的解决方案

您可以获得Shell.Application 可编写脚本的 Shell 对象轻松操作 Windows shell。在 PowerShell 中,每次运行以下命令时都会打开一个新的 Explorer

(New-Object -ComObject Shell.Application).Explore("C:\Users")

在 cmd 中你需要 PowerShell 的帮助,或者韦斯霍尔虚拟专用网络或者脚本。例如,您可以将以下代码保存为openFolder.vbs

CreateObject("Shell.Application").Explore(WScript.Arguments.Item(0))

然后在 cmd 中运行openFolder.vbs C:\Users。您还可以使用混合批处理/VBS 或批处理/Jscript,您可以将其另存为openFolder.bat并调用它,例如openFolder C:\Users

@if (@CodeSection == @Batch) @then
@echo off
cscript //e:jscript //nologo "%~f0" %*
exit /b
@end

// JScript Section
(new ActiveXObject("shell.application")).Explore(WScript.Arguments.Item(0));

当然你也可以将上面最后一行保存为openFolder.js并以同样的方式调用


对于 Windows 10,出于某种原因Open()或者Explore()不起作用,仍然关注当前打开的窗口,所以你必须打开一些目前未打开的文件夹,然后Navigate()窗口到所需的文件夹

# Create the shell object
$s = New-Object -ComObject Shell.Application

# Open a random folder that's not opened in Explorer
# I choose Control Panel (0x03/::{26EE0668-A00A-44D7-9371-BEB064C98683}\0)
# for simplicity
$s.Open(0x03)

# Wait for the folder to open. You may need to increase the delay
# if your CPU is slow or under high load
sleep 1
$openedPath = "::{26EE0668-A00A-44D7-9371-BEB064C98683}\0"

# Find the folder we've just previously opened
foreach ($win in $s.Windows()) {
    if ($win.Document.Folder.Self.Path -ieq $openedPath) {
        # Got the newly opened window, now we navigate it away
        $win.Navigate("C:\Users"); break
    }
}

对于 VBS 或 Jscript 执行相同操作

相关内容