如何直接解压嵌套的压缩包?

有 25 个 4GB 的 outer.7z.001 ~ outer.7z.025,里面有个 inner.rar,再里面则是需要的文件。

全部解压,需要写 200 GB 的固态。

除了买 128 GB 内存条外,有没有可以少写一点固态的解压办法?

比如,有没有能挂载 .7z .rar 文件啥的?

回复列表(11|隐藏机器人聊天)
  • @Ta / 2023-02-01 / /
    @无名啊,我明白了,第一个压缩包中里面只有一个inner.rar压缩包所以要提取inner.rar中的文件只能整个解压inner.rar这个文件。
    还有你干嘛那么心疼你的固态现在固态那么便宜,固态的售后不是按照质保期和twb那个先到按那个吗?你要是单纯为了减少固态硬盘的写入,那建议你买一块机械硬盘或者micro sd储存卡(终身固保)。
  • @Ta / 2023-02-01 / /

    @都是假的,网上下的,我也没辙。。有些人还用几GB字典去压 inner.rar 呢。。(压不动,解压时还要再吃我几GB内存。。)

    @上善若水,写入大小是 inner.rar 和里面的文件。我不需要中间文件 inner.rar

    笔电的固态,换起来估计会麻烦(预装的分区有没有笔电自己的东西,我也不清楚)

    所以能延长点寿命,就尽量延长下了

  • @Ta / 2023-02-01 / /
    @无名啊,那就放在别的设备上解压呗
  • @Ta / 2023-02-01 / /

    @上善若水,那肯定没问题。

    但还是先来请教请教,看有没有减少写入损耗的方法。

    比如,如果是 inner.zip 的话,使用支持流式读取 zip 的工具(如 bsdtarbusybox 里的 tar,稍稍动动手写一行代码7z ... | bsdtar ...,就能避免巨大的写入损耗,说实在是有点爽的事情。。

  • @Ta / 2023-02-02 / /

    @无名啊,Linux的unrar也可以流式调用:

    sudo apt install p7zip unrar
    7z e -so test.7z.001 inner.rar | unrar x -si -o"+" .
    
    -so 解压到标准输出
    -si 从标准输入读取压缩包
    -o"+" 解压时覆盖所有已存在文件(没有该选项,文件重名时会退出)
    
  • @Ta / 2023-02-02 / /

    @老虎会游泳,有效!

    奇怪的是,我在 WinRAR 的帮助手册上,找不到这个命令行选项

    image.png(52.88 KB)

  • @Ta / 2023-02-02 / /

    @无名啊,据我所知Windows的标准输入和标准输出不是二进制安全的,可能无法用于文件传输。只有Linux可以。

  • @Ta / 2023-02-02 / /

    @老虎会游泳,不会吧?msys2 上的命令行工具,我用的没啥问题呀

  • @Ta / 2023-02-02 / /
    被锁定
    层主 @老虎会游泳 于 2023-02-02 13:33 删除了该楼层。
  • @Ta / 2023-02-02 / /

    @无名啊,看起来有方法把标准输入和标准输出设置为二进制模式。

    https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/reference/setmode?view=msvc-170#example-use-_setmode-to-change-stdin

    _setmode( _fileno( stdin ), _O_BINARY );
    

    不过Win32控制台依然是特殊的,因为Win32窗口程序默认没有标准输入和标准输出,而启动Win32控制台程序则总会一并启动一个控制台宿主进程(conhost.exe)并显示黑窗口。所以Windows中的窗口程序和控制台程序往往是两个不同的二进制,就算功能相同(比如java.exejavaw.exe)。

  • @Ta / 2023-02-02 / /

    @无名啊,哦对了,unrar有两个版本,在Linux环境里安装的通常是GNU版本,可能和WinRAR附带的那个不一样。

添加新回复
回复需要登录