如何重新启动资源管理器而不丢失打开的窗口?

如何重新启动资源管理器而不丢失打开的窗口?

当我需要重新启动时explorer.exe,通常会打开许多​​文件夹,这些文件夹在此过程中会被关闭。那么有没有办法在重新启动资源管理器后自动重新打开这些文件夹?

答案1

batch脚本:

  1. 列出当前打开的窗口→将其保存到txt文件
  2. 重新启动 Windowsexplorer.exe
  3. 从列表中重新打开文件夹txt→删除txt文件

@echo off
setlocal enabledelayedexpansion

powershell  @^(^(New-Object -com shell.application^).Windows^(^)^).Document.Folder.Self.Path >> prevfolderpaths.txt

taskkill /im explorer.exe /f

start explorer.exe

FOR /F "tokens=*" %%f IN (prevfolderpaths.txt) DO (

set "var=%%f"
set "firstletters=!var:~0,2!"

IF "!firstletters!" == "::" ( start /min shell:%%~f ) ELSE ( start /min "" "%%~f" )

)

del "prevfolderpaths.txt"

一旦你将代码保存为restart_explorer.bat..接下来你应该

  1. 右键点击→ 发送到 → 桌面(创建快捷方式)
  2. 右键点击快捷方式 →跑步:最小化 → 和添加您的快捷方式

答案2

所以这个脚本只会打开最小化的窗口

我暂时无法发表评论,但想改进 goldnick7 的回答。您可以通过删除第二个来保持文件夹最大化/min

IF "!firstletters!" == "::" ( start /min shell:%%~f ) ELSE ( start "" "%%~f" )"

我先离开/min那里才记得有这面旗帜存在。


此外,在多用户环境中,您可以使用此命令仅影响您的进程:

taskkill /f /fi "UserName eq %UserName%" /im explorer.exe

重要的是/fi先进行/im,否则它将不起作用。

答案3

powershell $open_folders = @((New-Object -com shell.application).Windows()).Document.Folder.Self.Path; Stop-Process -Name explorer -Force;  foreach ($element in $open_folders){Invoke-Item $($element)}

相关内容