windows - 批量打开 & 重启 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未来版本可能会解决这个问题,所以我只是希望从中学到一些东西)
解决方案
请参阅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
推荐阅读
- django - 数据未从 Django Rest 检索到 Flutter App
- mysql - 获取Oracle存储过程内表中插入记录的主键值
- ruby-on-rails - 在获取请求时更新属性?
- excel - Powershell 脚本使用管道分隔符和文本限定符将 excel 转换为 csv
- python - Tortoise ORM - 具有 Postgresql 时间字段的 Pydantic 模型
- node.js - 有没有办法在插入后立即返回文档?
- gspread - Gspread append 没有删除单引号
- react-native - 我应该如何在嵌套组件中使用钩子
- c++ - C1010: 查找预编译头文件时意外结束。您是否忘记将 '#include "pch.h"' 添加到您的源代码中?即使它在那里
- python - 如何在 Python 中使用 NordVPN?