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

批处理文件求助:按顺序拆分50万张图片至每5000张小文件夹

嘿,我懂你现在的烦恼——好不容易把50万张图片拆分到5000张的文件夹里,结果发现本该挨着的图片(比如图片1和图片2)被分到完全不同的文件夹,这完全不符合预期对吧?我来给你一个能按文件名顺序批量拆分的批处理脚本,正好解决这个问题。

这个脚本的核心思路是先按文件名排序,再依次将图片分配到对应文件夹,确保顺序完全不乱。你可以直接用下面的代码:

@echo off
setlocal enabledelayedexpansion

:: 配置参数:每个文件夹的目标图片数量
set "batchSize=5000"
:: 配置要处理的图片扩展名,多个格式用空格分隔
set "imageExts=*.jpg *.jpeg *.png *.bmp"

:: 初始化计数器和文件夹序号
set "fileCount=0"
set "currentFolder=1"

:: 创建第一个目标文件夹,忽略"文件夹已存在"的错误提示
mkdir "Image_Set_!currentFolder!" 2>nul

:: 遍历按名称排序后的所有图片文件
for /f "delims=" %%img in ('dir /b /on %imageExts%') do (
    :: 移动当前图片到目标文件夹
    move "%%img" "Image_Set_!currentFolder!"
    
    :: 更新已移动文件的计数器
    set /a fileCount+=1
    
    :: 当达到批量数量时,切换到下一个新文件夹
    if !fileCount! equ !batchSize! (
        set "fileCount=0"
        set /a currentFolder+=1
        mkdir "Image_Set_!currentFolder!" 2>nul
    )
)

echo 拆分完成!一共创建了 !currentFolder! 个有序文件夹。
pause
endlocal

关键细节解释

  • dir /b /on %imageExts%:这是保证顺序的核心!/b只输出纯文件名,/on会让文件按自然名称顺序排序(比如1.jpg、2.jpg...10.jpg,而不是1.jpg、10.jpg、2.jpg这种字典序),完美匹配你的图片命名逻辑。
  • enabledelayedexpansion:因为我们在循环里需要实时更新fileCount和currentFolder这两个变量,必须启用延迟扩展,否则变量值不会动态变化。
  • mkdir ... 2>nul:加上2>nul是为了避免脚本因为“文件夹已存在”而报错,如果你中途暂停重新运行,也不会有问题。

使用注意事项

  1. 将脚本保存为OrderedSplit.bat,放到你的图片文件夹根目录下运行。
  2. 先拿一小部分图片测试!毕竟是50万张的大数量,先验证脚本符合预期再全量运行,避免误操作。
  3. 如果你的图片只有特定扩展名,比如只有png,就把imageExts改成set "imageExts=*.png"。
  4. 文件夹命名是Image_Set_1、Image_Set_2...你可以根据自己的喜好改成其他格式,比如Batch_001,只需要修改mkdir里的名称即可。

内容的提问来源于stack exchange,提问作者Jimmy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:25:43