我知道如何归档文件或使用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'选项)然后存档我想要的文件,但这个提取操作太多了。
答案 0 :(得分:1)
7-zip不提供此功能。你必须自己做。 这是一个快速演示。相对文件路径(在源.7z中)是第一个参数。其他args是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%
关于这个解决方案的一个怪癖是目标可能需要是一个完全限定的路径(因为你在引用它之前你正在改变到另一个目录)。由于我不知道您打算如何执行此操作,因此无法提出更好的解决方案来指定绝对路径。
答案 1 :(得分:1)
最接近暴露概念的是
7z e -so tata.7z tata.txt | 7z a -sitata.txt toto.7z
这将从源文件中提取tata.txt
,将输出发送到stdout,然后重新压缩到从stdin读取的目标文件中。
BUT文件需要解压缩/重新压缩。
似乎.zip接口与这种操作不兼容。 7z,bzip2,gzip工作没有问题。