撤销一个失败的命令提示符复制操作,该操作将我的所有文件合并在一起。

4
在 Windows 8 命令提示符中,我将备份驱动器插入并导航到我的用户目录。我执行了以下命令:copy Documents G:/Seagate_backup/Documents 我原以为copy会在备份驱动器上创建Documents目录,并将C: Documents目录的内容复制到其中。但事实并非如此!
之后,我擦掉了硬盘并重新安装操作系统,认为我已经备份了重要文件,结果发现copy似乎将不同类型(.doc、.pdf、.txt等)的C: Documents文件全部拼接成一个名为“Documents”的文件。当然,这个文件无法阅读,但在记事本中打开它可以看到一些明文文件,这些文件散布在极长的文件中。
我该怎么办?这太可怕了,因为我原本要帮朋友,而且当时我还特别自信。现在唯一能想到的是在拼起来的文件中搜索一些常见的分隔符,编写某种脚本以将文件再次分开。但那样的话,我就必须猜测每个部分的扩展名......

要合并文件,请指定一个目标文件,但将多个文件作为源文件。要指定多个文件,请使用通配符或在每个文件之间使用+列出文件(file1 + file2 + file3)。 以这种方式复制多个文件时,第一个文件必须存在,否则复制将失败,解决此问题的方法是COPY null + file1 + file2 dest1。好的,太棒了,现在如果我能弄清楚如何撤消它就好了... - papiro
1个回答

2
以copy方式合并文件会丢失重要的文件系统信息,例如文件大小和文件名。虽然文件名可能不那么重要,但大小是很重要的。这两个参数都被操作系统用于区分文件。
如果您之前损坏过文件分配表,并且所有文件都消失了,那么这个问题可能会听起来很熟悉。在这两种情况下,您最终将得到一个二进制块(可以是实际磁盘或类似于磁盘镜像的文件),它缺少任何大小和文件名信息。
幸运的是,这就是许多文件系统恢复工具可以帮助的地方。它们专门用于匹配模式。具体而言,它们正在寻找有关文件类型、起始位置和大小的提示线索。例如,许多文件类型都具有一组魔术数字,用于允许程序检查文件是否真的是扩展名所声称的类型。
原则上,更多或更少地撤消此过程是可能的。您需要使用数据恢复工具或其他分析工具(例如binwalk)提取连接的二进制块。基本上,用于恢复已删除文件的相同工具应该能够再次提取您的文档。当然没有文件名。我建议将文件重命名为磁盘映像(.img),然后从操作系统内部将其挂载为虚拟硬盘(不用担心它没有文件系统 - 它应该显示为未格式化的驱动器),或直接使用可以读取二进制文件的数据恢复工具或分析工具(例如binwalk可以直接执行此操作,但可能无法找到所有类型的文件,因为它主要用于解包可能以与您的文件类似或相同的方式组装的固件映像)。

这是一个老问题,没人再关心它了。有时候,Stack Overflow会将旧内容推广到主页上。这会导致像你这样的好心用户被骗而浪费时间。如果你和我一样讨厌这种情况,请在Meta上投诉。有关此事的帖子已经存在。 - usr
2
我仍然关心它。 - papiro
1
@papiro,既然您仍然关心解决方案,我建议将结果文件重命名为 .img 扩展名,然后使用实用程序将该映像作为虚拟硬盘挂载。然后使用诸如 Recurva 的工具从该映像文件中恢复数据。原则上,您的连接文件几乎构成了一个简单但已损坏的文件系统(缺少文件分配表,但以连续方式存储文件)。这对于许多深度扫描模式下的恢复实用程序而言足够接近,可以恢复大多数甚至全部文件。 - Benedikt M.
@usr,我能理解你的想法。事实上,当我偶然看到这个问题时,我自己也在寻找合并文件的语法(与papiro想要做的相反)。过去我也曾经丢失过文件,所以我其实期望papiro会一直保留他的文件,直到他最终找到解决方案,即使这个解决方案有点晚。 - Benedikt M.
好的,如果他还需要:我的方法是使用维基百科已知文件前缀列表。然后编写一个程序,根据这些已知前缀拆分文件。这将恢复许多文件。 - usr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接