备份/恢复当前打开的 Windows 资源管理器窗口

备份/恢复当前打开的 Windows 资源管理器窗口

我知道 Windows 中有一项功能,允许您“登录时恢复以前的文件夹窗口”,因为我已经在使用它了。当我处理一个大项目并且同时有 1000 万个任务时,资源管理器可能会崩溃,或者我可能必须强制重新启动资源管理器,然后我打开的所有文件夹都不会像我正常重新启动 Windows 时那样自动重新打开。

我需要一种方法来备份/恢复我当前打开的所有文件资源管理器文件夹窗口。我搜索过了,但一无所获。

至少,如果有办法捕获所有当前打开的文件夹的路径,那么我至少可以创建一个批处理脚本来重新打开所有文件夹。但我不知道如何捕获所有当前打开的文件夹的路径。

*我发现了一个名为“Handle”的 DOS 实用程序,它可以显示系统中任何进程的打开句柄的信息。我能够创建一个批处理脚本,并使用句柄输出当前打开的打开文件夹列表,但这绝对不是理想的。我仍然必须获取该输出并清理它,然后从中创建另一个脚本,然后自动打开文件夹。

我确信有人一定知道已经为此特定目的创建了一些实用程序。

答案1

当您运行此文件时,它将创建一个batch名为“foldersession.bat”的新文件,当您运行该文件时,它将恢复它们。

@echo off
title create backup of currently open folder windows
setlocal enabledelayedexpansion

powershell  @^(^(New-Object -com shell.application^).Windows^(^)^).Document.Folder.Self.Path >> prevfolderpaths.txt

FOR /F "tokens=*" %%f IN (prevfolderpaths.txt) DO (

set "var=%%f"
set "firstletters=!var:~0,2!"

IF "!firstletters!" == "::" ( ECHO start /min shell:%%~f >> foldersession.bat) ELSE ( ECHO start /min "" "%%~f" >> foldersession.bat)

)

del "prevfolderpaths.txt"

唯一的问题是,如果您想保存多个窗口会话,您将必须手动重命名文件。(例如foldersession1,foldersession2)

答案2

我想分享一下对优秀提案的修改@goldnick7。(这实际上是对他已经接受的答案的评论,但我会以这种方式发布它,以便我可以分享图像和格式化的代码)。

此修改允许拥有无限数量的具有唯一名称的备份文件,而无需每次手动重命名输出文件。这样,当您运行脚本时,它会将当前日期(YYYYMMDDHHII 格式)连接到文件名。如果您想在文件名末尾连接描述性标题/标签(不是必需的,您可以将其留空),它还会要求用户输入。

注意:我已将原始脚本重命名为“windows_explorer_save_session.bat”,以满足批处理脚本的个人命名标准(我有数百个每天都在使用的脚本,我很喜欢它们)。生成的文件名具有类似的格式:“windows_explorer_restore_session_DATE_OPTIONALTITLE.bat”

在此处输入图片描述

以下是扩展脚本:

@echo off 
title create backup of currently open folder windows 
setlocal enabledelayedexpansion

set /p "docTitle=Enter descriptive label (optional): " 
IF NOT "%docTitle%"=="" (   
    SET "docTitle=_%docTitle%" 
) 
FOR /F "tokens=1-6 delims=/: " %%G IN ("%DATE% %TIME%") DO (    
    SET "currentDate=%%I%%H%%G%%J%%K" 
) 
set "filename=windows_explorer_restore_session_%currentDate%%docTitle%.bat"    

powershell  @^(^(New-Object -com shell.application^).Windows^(^)^).Document.Folder.Self.Path >> prevfolderpaths.txt

FOR /F "tokens=*" %%f IN (prevfolderpaths.txt) DO (    
    set "var=%%f" 
    set "firstletters=!var:~0,2!"    
    IF "!firstletters!" == "::" ( ECHO start /min shell:%%~f >> %filename%) ELSE ( ECHO start /min "" "%%~f" >> %filename%)    
)    
del "prevfolderpaths.txt"

答案3

作为上述答案的替代方案,你可以使用选项卡栏(免费),Windows 资源管理器的一个扩展,可以使用“从所有选项卡创建组”功能为所有打开的选项卡添加书签。以后只需单击几下即可打开所有选项卡。

作为付费替代方案,您可以使用目录作品(DOpus)文件管理器。例如,如果您因 DOpus 崩溃而丢失了标签,您可以尝试以下几个步骤来恢复它们:

  1. 首先,重新启动 DOpus,看看标签是否重新出现。有时,崩溃可能会导致暂时的问题,可以通过重新启动程序来解决。

  2. 如果重新启动 DOpus 不起作用,请尝试使用“重新打开最后的列表器”功能。为此,请转到文件菜单并选择“退出 Directory Opus”。出现提示时,选择“重新打开程序上次关闭时打开的所有列表器”选项。这应该会恢复上次会话中的标签。

  3. 如果上述步骤不起作用,您可以尝试从已保存的布局中恢复标签。为此,请转到“设置”菜单并选择“列表布局”。选择要恢复的布局,然后单击“加载”按钮。

如果这些方法都不起作用,您的标签可能会因崩溃而永久丢失。在这种情况下,定期保存您的工作并创建备份很重要,以防止将来丢失数据。

作为上述段落的解决方案,您可以使用奥特维备份保存书签数据的文件(以防它们不使用注册表来存储书签)。这适用于 QTTabBar 和 DOpus。

相关内容