怎样批量缩放文件夹包含子目录里面的图片

⌚Time: 2025-07-12 22:41:00

👨‍💻Author: Jack Ge

下面的代码源自AI,实现了缩放一个目录里面的所有图片文件到40%,包含子目录里面的图片,并且缩放后导出到另一个文件夹,保持原有的目录结构。

这个代码是命名成bat批处理文件执行的。并且需要电脑上安装GraphicsMagick图片处理工具。里面的目录和缩放比例自己调整。

BatchScaleImg.bat


setlocal enabledelayedexpansion

:: 设置源文件夹和目标文件夹
set "source_folder=E:\sync\aaa\"
set "target_folder=E:\sync\aaa_scaled\"

:: 设置缩放比例为40%
set "resize_percent=40%%"

:: 遍历源文件夹
for /r "%source_folder%" %%f in (*.jpg *.jpeg *.png *.gif *.bmp) do (
    :: 获取相对路径
    set "rel_path=%%f"
    set "rel_path=!rel_path:%source_folder%=!"
    
    :: 创建目标目录结构
    set "target_path=%target_folder%!rel_path!"
    for %%a in ("!target_path!") do set "target_dir=%%~dpa"
    if not exist "!target_dir!" mkdir "!target_dir!"
    
    :: 执行缩放操作
    echo 正在处理: %%f
    gm convert "%%f" -resize "%resize_percent%" "!target_path!"
)

echo 所有图片处理完成
pause

我测试可行。我5627个图片75GB的大小,脚本运行了1个小时。平均每张图片8MB,变成了200KB。总共图片变成了1.43GB,极大的节省了我的硬盘空间。