本文目录导读:

- 场景一:批量压缩多个文件夹或文件为独立的 ZIP/RAR
- 场景二:将大量零散文件打包成一个巨大的压缩包
- 场景三:自动化打包整个项目(含版本号、排除临时文件)
- 场景四:打包后自动发送或移动(全自动)
- 总结:我的需求属于哪一种?
实用脚本能否批量打包”的问题,答案是肯定的,但具体如何实现,取决于你需要“打包”的是什么内容以及你使用的操作系统。
以下几个最常见的场景,我为你准备了对应的实用脚本思路:
批量压缩多个文件夹或文件为独立的 ZIP/RAR
这是最常见的需求(把每个客户资料文件夹单独打包)。
Windows (使用 PowerShell)
功能: 将当前目录下的每个子文件夹,打包成同名的 .zip 文件。
# 批量打包文件夹为独立ZIP
Get-ChildItem -Directory | ForEach-Object {
$source = $_.FullName
$destination = $_.FullName + ".zip"
Compress-Archive -Path $source -DestinationPath $destination -Force
Write-Host "打包完成: $($_.Name).zip"
}
macOS / Linux (使用 Bash Shell)
功能: 将当前目录下的每个子文件夹,打包成同名的 .tar.gz 文件。
#!/bin/bash
# 批量打包文件夹为独立的 tar.gz
for dir in */; do
if [ -d "$dir" ]; then
# 去掉末尾的斜杠
dirname="${dir%/}"
tar -czf "${dirname}.tar.gz" "$dir"
echo "打包完成: ${dirname}.tar.gz"
fi
done
将大量零散文件打包成一个巨大的压缩包
如果你想一键搜刮所有 .jpg 文件或所有文档打包,可以用下面的脚本。
Windows (CMD 批处理)
@echo off
REM 打包当前目录及子目录下所有 .txt 文件
for /r %%i in (*.txt) do (
"C:\Program Files\7-Zip\7z.exe" a -tzip AllTexts.zip "%%i"
)
echo 所有txt文件已合并到 AllTexts.zip
REM 注意:这里使用了7-Zip,如果你没有,需要下载或改用内置的 tar 命令
macOS / Linux (Bash)
# 将所有 .pdf 文件打包成一个压缩包 find . -name "*.pdf" -type f | tar -czf all_pdfs.tar.gz -T - echo "所有PDF文件已打包到 all_pdfs.tar.gz"
自动化打包整个项目(含版本号、排除临时文件)
适合开发人员或需要定期备份资料的情况。
功能: 自动生成带日期的压缩包,并排除 node_modules 和 temp 文件夹。
#!/bin/bash
# 项目打包脚本
project_name="my_project"
version=$(date +"%Y%m%d_%H%M%S")
output_name="${project_name}_${version}.tar.gz"
# 使用 --exclude 排除不需要的文件
tar --exclude="node_modules" \
--exclude="temp" \
--exclude=".git" \
-czf "$output_name" .
echo "项目已打包完成: $output_name"
打包后自动发送或移动(全自动)
很多实用脚本不仅仅是打包,还会在打包完成后执行其他动作。
#!/bin/bash
# 打包 -> 移动到归档目录 -> 删除源文件
archive_dir="/backup/archives"
date_tag=$(date +%Y%m%d)
# 1. 打包
tar -czf "report_${date_tag}.tar.gz" /data/reports/*.csv
# 2. 移动到归档位置
mv "report_${date_tag}.tar.gz" "$archive_dir"
# 3. 清理源文件
rm -rf /data/reports/*.csv
echo "打包并归档完成!"
我的需求属于哪一种?
| 你的需求 | 推荐方案 | 工具/语言 |
|---|---|---|
| 把每个文件夹单独打包 | 循环压缩 | PowerShell / Bash / Python |
| 把成百上千个文件合包 | 文件列表 + 压缩 | find + tar / 7-Zip |
| 定期备份项目 | 带排除列表 + 日期版本 | Bash Shell / Shell脚本 |
| 跨平台、复杂逻辑 | 用 Python 脚本 | shutil.make_archive |
如果你能告诉我:
- 你用的是 Windows、Mac 还是 Linux?
- 你是想合包(一个包)还是分拆打包(N个文件夹 → N个包)?
- 打包后还有没有其他需求(如改名、移动、删除源文件)?
我可以为你定制一条直接可用的命令或脚本。