V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Air_Mu
V2EX  ›  问与答

如何把一堆文件夹分别压缩成一个个压缩文件?

  •  
  •   Air_Mu · 2012-12-13 16:53:38 +08:00 · 7360 次点击
    这是一个创建于 4367 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家都知道在WIN下选定多个RAR文件右键后会出现“解压每个压缩文件到单独的文件夹。”现在刚好需要反过来操作,就是把每个文件夹压缩成单独的压缩文件。谁知道该怎么弄?

    用WINRAR或者7Z都行,只要能做到。
    8 条回复    2021-03-05 13:22:52 +08:00
    clowwindy
        1
    clowwindy  
       2012-12-13 16:58:56 +08:00   ❤️ 2
    7zip 支持命令行调用:

    7z a foo.7z foo

    再写个 Python 脚本循环调用,就很容易了吧。
    funagi
        2
    funagi  
       2012-12-13 17:52:37 +08:00
    Zip2Dir可批量打包子目录
    http://www.onlinedown.net/soft/22577.htm
    123123
        3
    123123  
       2012-12-13 17:59:53 +08:00   ❤️ 1
    WinRAR在压缩时,在文件选项卡里把「把每个文件放到单独的压缩文件中」勾上就ok了
    skydiver
        4
    skydiver  
       2012-12-13 18:42:37 +08:00
    @123123 ls正解
    Air_Mu
        5
    Air_Mu  
    OP
       2012-12-13 20:04:38 +08:00
    @123123
    @skydiver

    试了下确实是的 之前也看到过这个选项,但是看字面意思还以为会把文件夹里的子文件每个都单独压缩。就没试
    kong12
        6
    kong12  
       2016-05-29 19:59:44 +08:00   ❤️ 1
    1 、如果是用 winrar ,在文件选项卡里把「把每个文件放到单独的压缩文件中」勾上就 ok 了。

    2 、如果是用 7-zip ,要建立一个 bat 文件,里面输入以下内容
    for /d %%X in (*) do "c:\Program Files\7-Zip\7z.exe" a "%%X.7z" "%%X\"
    这里面根据自己的 7-zip 的安装目录,和要压缩的压缩包类型,相应该代码。
    然后把该 batW 文件和你需要打包的那些文件处于同一目录,且该目录下除了我们要压缩的那些文件夹和批处理文件外,没有其他多余的文件或文件夹。双击运行该 bat 即可。
    请参考本文 http://jingyan.baidu.com/article/bea41d43412d8bb4c51be62d.html
    feng0vx
        7
    feng0vx  
       2021-03-05 12:36:31 +08:00
    win 下用 7zip 楼上正解

    再发一个 linux 下 zip 压缩的脚本
    #!/bin/bash
    FILE=`ls -l |grep "^d" |awk '{print $9}'`
    echo $FILE
    for i in $FILE
    do
    ## 循环遍历静默压缩
    zip -rq "$i".zip "$i"
    ## 压缩完成显示一个
    echo $i.zip
    done

    有一个 bug,文件夹中不能有空格,高手给修复下,哈哈~~~
    feng0vx
        8
    feng0vx  
       2021-03-05 13:22:52 +08:00
    @feng0vx 自己搞定了

    #!/bin/bash
    c=0
    for file in *
    do
    if [ -d "$file" ] ; then
    dirlist[$c]="$file"
    echo "$file"
    ((c++))
    fi
    done
    echo '----------------'

    for i in "${dirlist[@]}"
    do
    zip -rq "$i".zip "$i"
    echo $i.zip
    done
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3165 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:15 · PVG 21:15 · LAX 05:15 · JFK 08:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.