directory - 使用 7z @listfile 功能在不同文件夹中压缩具有相同名称的文件

标签 directory compression duplicates 7zip

我想使用 7zip 的 @listfile 功能创建一个包含名称相同但位于不同文件夹中的文件的 7zip 文件。虽然我已经使用 7zip CLI 很长时间了,但我找不到实现这一点的语法。

我的文件树看起来像这样(注意 somefile1.html 和 somefile2.html 各出现两次)。

|   somefile2.html
+---dir1
|       somefile1.html
|       somefile2.html
|       
+---dir2
|       somefile3.html
|       somefile4.html
|       
\---dir3
        somefile1.html
        somefile5.html

使用@listfile 工作正常,但我无法弄清楚如何在执行此操作时在生成的 7zip 中保留目录树。

我尝试了以下语法:

7z a -ir@files.txt my_compressed_file.7z

然后,根据语法下 7zip 的 Windows CHM 帮助文件中的解释,我也尝试包含根文件夹(称为"file"):

7z a -ir@files.txt my_compressed_file.7z .\files

在这两种情况下,我都会遇到相同的错误:
Error
Duplicate filename:
somefile1.html
somefile2.html

有没有人想出这个并愿意解释一下?

我知道如何在不同的文件夹中压缩具有相同名称的文件(当文件夹结构保留在 7zip 中时,没问题)。但这一次我需要的几个文件到处都是......

最佳答案

以下用于 Windows 的命令,使用 shell 和 7za(7zip 的命令行版本)可能适用于其他平台;但这为我解决了问题:

1) 使用如下命令列出要存档的所有文件,包括完整路径;假设您的命令提示符位于 C:\目录中,并且您希望列出 C: 驱动器上所有子目录中的所有 *.xmp 文件,以便在下一步中存档:

DIR /B /S *.xmp > XMPsToArchiveList.txt

2) 使用 XMPsToArchiveList.txt 作为 7za 的列表文件,带有 -spf 开关,它指示 7za “使用完全限定的文件路径:”
7za a -spf -ir@XMPsToArchiveList.txt allCdriveXMPs.7z

如果一切顺利,您应该会收到幸福的消息:“一切正常”,并会看到一个新的正确命名的 .7z 存档。

在我的测试中,生成的 .7z 存档具有反射(reflect)所有 .xmp 文件的完整路径的文件夹和子文件夹,根文件夹名为“C:”。

笔记:

A) 在 Windows 上,要调整 list 命令以包含给定名称的这么多目录中的所有内容(在这么多不同的地方),您可以使用例如:
DIR /S /B *_aCertainFolderNameDuplicatedAllOverTheDrive* > foldersToArchive.txt

B) 2011-09-16 添加了 -spf 开关;回复:http://www.7-zip.org/history.txt

此外,我尝试使用通配符尝试生成您描述的列表,但没有任何运气将所有文件命名为例如somefile*.txt 到一个列表中(例如 archiveThisFiles.txt)。也许我打错了?看起来很简单。您需要在提示下乱七八糟才能找到适合您的方法。

最后,我不知道 -spf 开关是否可用于 7z(与 7za 相对)。 7za 在那边可用,在“额外”下载中:http://www.7-zip.org/download.html

关于directory - 使用 7z @listfile 功能在不同文件夹中压缩具有相同名称的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12675246/

相关文章:

java - 使用类名运行 maven 测试 - Maven 如何找到该类?

特定目录的 SSL 证书

directory - 如何在解决方案级别添加额外的包含目录?

java - 如何创建具有平均深度的文件夹和子文件夹

java - 重复项具有不同的 MD5 校验和

php - 在 mysql 列中搜索重复项并在 while 循环中为变量添加后缀

C++ 将八个 boolean 值压缩为一个字符

python - 如何打开和读取内存中的 LZMA 文件

image - flutter 图像压缩

sql - 返回具有重复数据的行的 id