批量打开&重启资源管理器.exe&然后恢复所有窗口[关闭] 。

问题描述 投票:1回答:1

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

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

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

其他信息。

我想为最终用户(非 "专家 "用户)设置一个批处理,所以我想把它变成一个 "双击 "批处理,关闭explorer,然后恢复到之前的状态。

本帖的 "源头 "问题是 "Windows 10资源管理器的搜索不能用"。https:/answers.microsoft.comen-uswindowsforumallfile-explorer-search-not-working-in-windows-103c70ea75-79a8-4f3b-b10a-86be1f22931c。(Windows未来的版本可能会解决这个问题,所以我只希望能从中学习到一些东西)

windows batch-file search windows-10 explorer
1个回答
1
投票

参考这个vbscript Windows资源管理器中所有打开的目录列表 可以使用这样的批处理脚本。

@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
© www.soinside.com 2019 - 2024. All rights reserved.