当我需要重新启动时explorer.exe
,通常会打开许多文件夹,这些文件夹在此过程中会被关闭。那么有没有办法在重新启动资源管理器后自动重新打开这些文件夹?
答案1
此batch
脚本:
- 列出当前打开的窗口→将其保存到
txt
文件 - 重新启动 Windows
explorer.exe
- 从列表中重新打开文件夹
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
..接下来你应该
- 右键点击→ 发送到 → 桌面(创建快捷方式)
- 右键点击快捷方式 →跑步:最小化 → 和添加您的快捷方式
答案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)}