首页 > 解决方案 > 批量打开 & 重启 Explorer.exe & 然后恢复所有窗口

问题描述

现在我有这个批处理文件,它关闭 explorer.exe,等待一秒钟然后再次打开它(它完成了它的工作):

@echo off 
taskkill /f /IM explorer.exe
timeout /t 1 >nul
start explorer.exe

有没有办法恢复上述批次为我关闭的所有窗口(目录)?我想在 .txt 文件中关闭资源管理器之前导出所有位置,然后从同一个批处理文件中再次打开它,但我还没有测试过。我愿意接受任何建议。

附加信息:

我正在尝试为最终用户(非“专家”用户)设置一个批处理,所以我想将其设置为“双击”批处理,它将关闭资源管理器,然后将其恢复到以前的状态。

这篇文章的“来源”问题是“Windows 10 资源管理器的搜索不起作用”: https ://answers.microsoft.com/en-us/windows/forum/all/file-explorer-search-not-working- in-windows-10/3c70ea75-79a8-4f3b-b10a-86be1f22931c (Windows未来版本可能会解决这个问题,所以我只是希望从中学到一些东西)

标签: windowsbatch-filesearchwindows-10explorer

解决方案


请参阅Windows 资源管理器中所有已打开的目录的vbscript列表,这些目录可以与这样的批处理脚本一起使用:

@echo off
Title Kill and restart Explorer.exe and restore all the windows by Hackoo 2020
Color 0A
Set "VBSFILE=%~dpn0.vbs"
> "%VBSFILE%" (
    echo Wscript.Echo Opened_Folders
    echo Function Opened_Folders
    echo    Dim objShellApp,wFolder,Open_Folder,F
    echo    Set objShellApp = CreateObject("Shell.Application"^)
    echo    For Each wFolder In objShellApp.Windows
    echo        Open_Folder = wFolder.document.Folder.Self.Path
    echo        F = F ^& Open_Folder ^& vbcrlf
    echo    Next
    echo    Opened_Folders = F
    echo End Function
)
REM  Populate the array with existent and opened folders
SetLocal EnableDelayedExpansion
Set /a Count=0
for /f "delims=" %%a in ('Cscript //NoLogo "%VBSFILE%"') do (
    Set /a Count+=1
    Set "Folder[!Count!]=%%a"
)
Taskkill /f /IM "explorer.exe"
Timeout /T 1 /NoBreak>nul
Start Explorer.exe
rem Restore all folders before killing explorer process
for /L %%i in (1,1,%Count%) do Explorer "!Folder[%%i]!"
pause & exit

推荐阅读