You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批量压缩子目录并以父文件夹命名压缩包的命令需求

批量压缩子目录并以父文件夹命名压缩包的命令需求

我来帮你搞定这个批量压缩的问题!你现在的需求很明确:每个形如ABC-2000-001-01.pax的文件夹里,都有FolderA和FolderB,要把这两个子文件夹直接打包成和父文件夹同名的压缩包(比如ABC-2000-001-01.pax.zip),而且要保留原有的目录结构——既不能把文件夹扁平化,也不能在压缩包里多套一层父文件夹。

之前你用的批处理之所以会多一层目录,是因为它直接把整个父文件夹作为压缩对象,导致压缩包里先出现ABC-2000-001-01.pax这个文件夹,里面才是FolderA和FolderB。咱们换个思路,进入到每个父文件夹内部去压缩,就能完美解决这个问题。

给你调整后的批处理脚本:

@echo off
setlocal enabledelayedexpansion

:: 遍历当前目录下所有以.pax结尾的文件夹
for /d %%i in (*.pax) do (
    echo 正在压缩 %%i...
    :: 进入目标文件夹
    pushd "%%i"
    :: 将当前文件夹内的所有内容(FolderA、FolderB)压缩到上级目录的同名zip包
    7z a "../%%i.zip" *
    :: 返回原来的目录
    popd
)

脚本说明:

  • pushd "%%i":临时进入到每个.pax文件夹里,这样压缩时的根目录就是这个文件夹内部,不会带上外层的父文件夹名称。
  • 7z a "../%%i.zip" *:把当前文件夹里的所有内容(也就是FolderA和FolderB)添加到上级目录的%%i.zip文件中,这样压缩包打开后直接就能看到这两个文件夹,完全符合你的结构要求。
  • 如果需要生成.7z格式的压缩包,只需要把../%%i.zip改成../%%i.7z就行。
  • 要是你想压缩当前目录下的所有文件夹(不只是.pax结尾的),把(*.pax)改成(*)即可。

这个脚本既不会扁平化你的目录结构,也不会多生成多余的层级,完全匹配你的需求~

备注:内容来源于stack exchange,提问作者NoorSafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 15:04:08