从档案中提取哈希值(CRC)和路径名

从档案中提取哈希值(CRC)和路径名

我已使用 7-zip 成功提取大型 .rar 存档(1.9TB)中的数据,现在我想删除该存档。但在删除之前,我想保存路径名,最重要的是相应的7-zip 文件管理器中 CRC 列中列出的 CRC 值

据我所知,执行此操作的唯一方法是通过 cmd.exe 使用以下命令7z l -slt <archive.zip>。但是,这种方法对我来说效率不高。首先,命令提示符的输出窗口大小有限。我知道我可以调整缓冲区大小(甚至可能最大到 32766),但存档中有超过一百万个文件……然而,更成问题的是,据我所知,这种方法的输出格式无法更改,如下所示:

Path = -
Folder = -
Size = -
Packed Size = -
Modified = -
Created =
Accessed =
Attributes = -
Encrypted = -
Solid = -
Commented = -
Split Before = -
Split After = -
CRC = -
Host OS = -
Method = -
Version = -
Volume Index = -

而我正在寻找的是每个文件的输出,如下所示:

<CRC> <pathname>

例如:

60CD248A *Folder1\text1.txt
61CD248A *Folder1\Folder2\text1.txt
62CD248A *Folder1\Folder2\text2.txt

非常感谢您付出的时间和帮助。

答案1

您可以使用一行命令代码从命令行输出中仅获取 CRC 行:

7z l -slt archive.zip >> "%tmp%\output.txt" && type "%tmp%\output.txt"|findstr /b CRC | clip && del /q /f "%tmp%\output.txt"

CRC - .....此命令将把7z 命令输出的所有行内容放入剪贴板(Crtl+C) 。

要保存在文件中:

7z l -slt archive.zip >> "%tmp%\output.txt" && type "%tmp%\output.txt"|findstr /b CRC >>"c:\my_folder\my_save_output.txt" && del /q /f "%tmp%\output.txt"

循环(通过“for”)并保存 CRC 字符串:

for /f tokens^=2*^delims^=^ ^-^  %i in ('7z l -slt archive.zip^|findstr /b CRC')do @echo/%i>>"c:\my_folder\my_save_output.txt"
  • 我的 7Z 版本输出如下CRC = 字符串,就我而言,分隔符更改为:
for /f tokens^=^2*^delims^=^=^  %i in ('7za l -slt archive.zip ^| find /i "crc"')do @echo/%i>>"c:\my_folder\my_save_output.txt"

观察:1)中间有 2 个空格^=^=%i

delims^=^=%i  --->  delims^=^=^  %i 

观察:2)同样适用于 Path,只需替换CRC小路

观察:3)便携版使用的可执行文件是 7za.exe,您可能有其他名称。

相关内容