首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不提取.7z的情况下直接为7zip存档文件?

如何在不提取.7z的情况下直接为7zip存档文件?
EN

Stack Overflow用户
提问于 2013-12-17 18:29:50
回答 2查看 2.3K关注 0票数 2

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

代码语言:javascript
复制
    winrar -a dest_archive.rar origin_archive.zip/toto.txt

这在7z看来是不可能的。目前我正在尝试的是

代码语言:javascript
复制
    "C:\Program Files\7-Zip\7z" a "toto.zip" tata.7z\tata.txt

我知道我可以提取整个归档文件(使用'e‘选项),然后归档我想要的文件,但是这个解压缩操作太多了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-17 19:08:41

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

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2013-12-18 09:20:19

你能接触到的最接近的概念是

代码语言:javascript
复制
7z e -so tata.7z tata.txt | 7z a -sitata.txt toto.7z

这将从源文件中提取tata.txt,将输出发送到stdout,并将其重新压缩为从stdin读取的目标文件。

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

而且.zip接口似乎与这种操作不兼容。7z,bzip2,gzip工作时没有问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20641955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档