windows - 如何直接使用 7zip 将文件归档为 .7z 而不解压?

标签 windows batch-file command-line archive 7zip

我知道如何存档文件或使用 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 文件(源,然后是目标)。

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%

此解决方案的一个怪癖是目标可能需要是完全限定的路径(因为您在引用它之前要更改为不同的目录)。由于我不确切知道您打算如何执行此操作,因此我无法提出指定绝对路径的更好解决方案。

关于windows - 如何直接使用 7zip 将文件归档为 .7z 而不解压?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20641955/

相关文章:

wpf - 在 WinForms 或 WPF 应用程序中编辑 HTML

windows - 批处理文件提取并将文本传递给变量?

swift - 如何在 Swift 中访问程序参数?

c++ - 有什么有用的建议可以找出在 Win32 进程中释放内存的位置吗?

c++ - 使用 SHAppBarMessage 移动任务栏

c++ - 编译 zxing 时 Libconv 无法转换参数

string - 批量 - 获取当前运行系统的系统语言

android - 如何将文件放入准备使用的apk的res文件夹中?

android - 是否可以在终端中使用 adb 将我正在调试的应用程序设置为 "force stop"?

windows - 更改 .bat 文件中的代码页(Win7 与 Win Vista)