我的 Notepad++ 上至少打开了 50 个文件,用于整理我所有的工作。
我像往常一样让计算机休眠一整夜,令人惊讶的是,今天早上一切都消失了。
最大化 Notepad++ 时弹出一条错误消息,提示无法打开文件。
我接受了错误并且 Notepad++ 上没有文件。
重新启动后什么都没有任何变化,在备份文件夹中我只发现很久以前处理过的独立的旧脏文件......
关于如何恢复我宝贵的工作时间,您有什么想法吗?
谢谢,
答案1
你不能,但你可以确保不再发生这种情况。
这是可能的如果您在“偏好设置”中设置了云路径:
故障发生后,立即关闭与云的同步并从那里恢复原始文件。如果您的云具有文件版本控制,那么就更简单了:只需检索旧版本的session.xml
。
这也适用于所有其他设置文件,请参阅上面的链接了解详情。
另外请确保你至少更新到Notepad++ 7.5.9。
在其修复的错误列表中,有
- 修复备份或断电或其他异常 N++ 终止期间可能出现的文件损坏问题。
是的,这个问题已在 2018 年 10 月得到解决。
答案2
除非您已将会话保存在云中(如上一个答案所示),否则您无法恢复整个会话。但是,您可以恢复未保存的(新)笔记。它们存储在:
%APPDATA%\Notepad++\backup
您可以直接在 Notepad++ 中打开所有这些文件,也可以在以下位置重新创建会话文件:
%APPDATA%\Notepad++\session.xml
这样该<mainView>
部分将包含所有内容。
以下是一个 Python 脚本,可让您更轻松地重做会话文件。只需将输出粘贴在<mainView>
和</mainView>
标签之间即可:
import os
import os.path as osp
npp_path = osp.join(osp.expandvars('%APPDATA%'), 'Notepad++', 'backup')
for fn in sorted(os.listdir(npp_path), key=lambda fn: fn.split('@')[1]):
name = fn.split('@')[0]
print('<File firstVisibleLine="0" xOffset="0" scrollWidth="64" '
'startPos="8" endPos="8" selMode="0" lang="Normal Text" '
'encoding="-1" userReadOnly="no" filename="{name}" '
'backupFilePath="{npp_path}\{fn}" originalFileLastModifTimestamp="0"'
'originalFileLastModifTimestampHigh="0" '
'mapFirstVisibleDisplayLine="-1" mapFirstVisibleDocLine="-1" '
'mapLastVisibleDocLine="-1" mapNbLine="-1" mapHigherPos="-1" '
'mapWidth="-1" mapHeight="-1" mapKByteInDoc="0" '
'mapWrapIndentMode="-1" mapIsWrap="no" />'.format(
name=name, npp_path=npp_path, fn=fn))
答案3
感谢 Joe Pineda 对备份文件夹的评论。在我丢失崩溃的会话后,我发现此文件夹中有许多文件 - 既有未保存的笔记,也有已打开的现有文件。它们的大小(以字节为单位)不为零,但普通记事本和 Notepad++ 本身都没有显示任何内容。但是,您可以在 Linux 中阅读它们。
请记住复制备份目录,以防出现意外错误。
我通过列出文件名并从文件名中删除“new”来恢复未保存的笔记(Windows 喜欢文件名中的空格)。
for note in $(ls new*); do echo $note | grep -v new; done
该名称列表可以保存在变量中,然后可以将文件复制到例如 .txt:
filenames=$(for note in $(ls new*); do echo $note | grep -v new; done)
for f in $filenames ; do cp 'new '$f 'new '$f.txt; done
答案4
如果没有备份,请从以下文件重建会话:备份文件夹
确定备份文件夹的路径。通常它在菜单中设置>优先>备份>备份路径. 假设它是:
C:\工具\Notepad++\备份\
从该文件夹获取文件列表,假设它是:
新 164@2021-10-11_114009 新 169@2021-10-11_185349 新 174@2021-10-12_184441
在 Notepad++ 目录中,编辑文件会话.xml
• 在不同的编辑器中进行编辑,Notepad++ 没有运行将您的文件列表转换为 XML
<File />
标签并将其插入到已经存在的<mainView />
标签中,如下所示:
<mainView activeIndex="1">
<file filename="R-new 164" backupFilePath="C:\Tools\Notepad++\backup\new 164@2021-10-11_114009"/>
<file filename="R-new 169" backupFilePath="C:\Tools\Notepad++\backup\new 169@2021-10-11_185349"/>
<file filename="R-new 174" backupFilePath="C:\Tools\Notepad++\backup\new 174@2021-10-12_184441"/>
</mainView>
• 您可以注意到我R-new 164
为已恢复文件选择了标签名称new 164
,并对其他文件做了类似操作。这只是一个命名约定,您可以使用自己的约定。它将帮助您识别文件已恢复。它还可以防止命名冲突。
保存到会话.xml并运行 Notepad++。备份文件夹中的文件将出现在您的会话中。
您在之前丢失的会话中从其他文件夹(例如
D:\Project\file.txt
)打开的文件将仍然丢失的在会话中,但您可以正常找到并添加(打开)它们。如果它们在您的 N++ 崩溃时有未保存的草稿,您可以在已恢复的文件中找到它,它将有名称R-file.txt
(根据您在步骤 4 中选择的命名约定)。