如何使用7zip直接为.7z存档文件而不提取?

我知道如何存档文件或使用7zip(在Windows中)解压缩。 我知道WinRAR工具可以从另一个档案中归档文件。 就像是

winrar -a dest_archive.rar origin_archive.zip/toto.txt 

这似乎不可能与7z。 目前这是我正在尝试

  "C:\Program Files\7-Zip\7z" a "toto.zip" tata.7z\tata.txt 

我知道我可以提取整个档案(与'e'选项),然后存档我想要的文件,但这种提取操作是太多了。

7-zip不提供此功能。 你必须自己做。 这是一个快速演示。 相对的文件路径(源文件中是.7z)是第一个参数。 其他的参数是7-Zip档案(来源,然后dest)。

 SETLOCAL SET "FILE_TO_MOVE=%~1" SET "SOURCE_ARCHIVE=%~2" SET "TARGET_ARCHIVE=%~3" ECHO File: %FILE_TO_MOVE% ECHO Source: %SOURCE_ARCHIVE% ECHO Target: %TARGET_ARCHIVE% SET "TEMP_DIR=%TEMP%\7z_temp_%RANDOM%" IF EXIST "%TEMP_DIR%" RMDIR /S /Q "%TEMP_DIR%" MKDIR "%TEMP_DIR%" @ECHO Before copy... 7z.exe l "%TARGET_ARCHIVE% 7z.exe x -o"%TEMP_DIR%" "%SOURCE_ARCHIVE%" "%FILE_TO_MOVE%" pushd "%TEMP_DIR%" 7z.exe a "%TARGET_ARCHIVE%" "%FILE_TO_MOVE%" popd RMDIR /S /Q "%TEMP_DIR%" @ECHO After copy... 7z.exe l "%TARGET_ARCHIVE% 

关于这个解决方案的一个怪癖是,目标可能需要一个完全合格的路径(因为在引用它之前,你正在改变到不同的目录)。 由于我不知道你打算如何执行这个操作,我不能提出一个更好的解决方案来指定一个绝对路径。

你可以进入最接近的概念是

 7z e -so tata.7z tata.txt | 7z a -sitata.txt toto.7z 

这将从源文件中提取tata.txt ,将输出发送到标准输出,并从标准输入重新压入目标文件读取。

但文件需要解压/重新压缩。

看来.zip界面与这种操作不兼容。 7z,bzip2,gzip工作没有问题。