实用脚本能批量打包吗?

wen 实用脚本 10

本文目录导读:

实用脚本能批量打包吗?

  1. 场景一:批量压缩多个文件夹或文件为独立的 ZIP/RAR
  2. 场景二:将大量零散文件打包成一个巨大的压缩包
  3. 场景三:自动化打包整个项目(含版本号、排除临时文件)
  4. 场景四:打包后自动发送或移动(全自动)
  5. 总结:我的需求属于哪一种?

实用脚本能否批量打包”的问题,答案是肯定的,但具体如何实现,取决于你需要“打包”的是什么内容以及你使用的操作系统。

以下几个最常见的场景,我为你准备了对应的实用脚本思路:

批量压缩多个文件夹或文件为独立的 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_modulestemp 文件夹。

#!/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

如果你能告诉我:

  1. 你用的是 Windows、Mac 还是 Linux?
  2. 你是想合包(一个包)还是分拆打包(N个文件夹 → N个包)?
  3. 打包后还有没有其他需求(如改名、移动、删除源文件)?

我可以为你定制一条直接可用的命令或脚本

抱歉,评论功能暂时关闭!