You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

重启explorer.exe后恢复已打开文件夹窗口的实现方法咨询

重启explorer.exe后恢复已打开文件夹窗口的实现方法咨询

嘿,你这个思路完全靠谱!我来给你拆解一下具体怎么用PowerShell实现,步骤很直观:

第一步:保存当前打开的文件夹路径

我们可以通过Windows的Shell对象获取所有正在打开的文件夹窗口,提取它们的本地路径并保存到一个临时文件里:

# 创建Shell对象来访问资源管理器窗口
$shell = New-Object -ComObject Shell.Application
# 筛选出所有普通文件夹窗口,提取并转换成本地路径格式
$folderPaths = $shell.Windows() | Where-Object { $_.LocationURL -match '^file:///' } | ForEach-Object {
    $decodedPath = [System.Web.HttpUtility]::UrlDecode($_.LocationURL -replace '^file:///', '')
    $decodedPath -replace '/', '\'
}
# 把路径保存到系统临时目录的文件里,你也可以改成桌面路径比如"$HOME\Desktop\OpenFolders.txt"
$saveFile = "$env:TEMP\OpenFolders.txt"
$folderPaths | Out-File -FilePath $saveFile -Encoding UTF8

第二步:重启Explorer.exe

用你提到的命令强制结束并重启资源管理器:

# 强制终止Explorer进程
Stop-Process -Name explorer -Force
# 等待2秒确保进程完全退出
Start-Sleep -Seconds 2
# 重启资源管理器
Start-Process explorer.exe

第三步:恢复之前打开的文件夹

等Explorer重启完成后,读取保存的路径并逐个打开:

# 等待5秒让Explorer完全加载(时间可以根据自己的电脑速度调整)
Start-Sleep -Seconds 5
# 读取保存的路径并打开对应的文件夹
if (Test-Path $saveFile) {
    Get-Content $saveFile | ForEach-Object {
        if (Test-Path $_) {
            # /select参数会让资源管理器定位到该文件夹并选中
            Start-Process explorer.exe -ArgumentList "/select,$_"
        }
    }
    # 可选:恢复完成后删除临时文件
    Remove-Item $saveFile -Force
}

一些小提示:

  • 不需要管理员权限也能运行这些命令,除非你要访问受系统保护的特殊文件夹;
  • 代码会自动过滤掉“此电脑”、“回收站”这类特殊窗口,如果需要包含它们,可以调整Where-Object的判断条件;
  • 你可以把这三段代码合并成一个完整的PowerShell脚本,一键完成保存、重启、恢复的流程。

备注:内容来源于stack exchange,提问作者fatFeather

火山引擎 最新活动