批量打开&重启Explorer.exe然后恢复所有windows

Batch to open & restart Explorer.exe & then restore all the windows

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

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

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

附加信息:

我正在尝试为最终用户(非 "expert" 用户)设置一个批处理,所以我想将其设为一个 "double click" 批处理,它将关闭资源管理器然后恢复它处于以前的状态。

这个post的"source"问题是"Windows 10 explorer's search doesn't work": https://answers.microsoft.com/en-us/windows/forum/all/file-explorer-search-not-working-in-windows-10/3c70ea75-79a8-4f3b-b10a-86be1f22931c (Windows以后的版本可能会解决这个问题,希望能从中学到一些东西)

参考这个 vbscript List of all dirs in Windows Explorer that are open,它可以与这样的批处理脚本一起使用:

@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