几百个文件如何快速按20个一组移动到新文件夹里?

使用高拍仪扫描了一些文档,后续需要用「原本」处理一下,但是它的批量处理只对前20个文件有效,所以需要把几百个文件按照20一个组的形式,移动到新建文件夹里面,手动操作繁琐并且容易出错,希望有一些简单快速的方法完成。
系统是 Windows 的。

有比“Folder Splitter”更方便拆分文件夹的工具吗? - 问题求助:question: - 小众软件官方论坛 (appinn.net)

任意一个文件重命名工具都可以轻松做到,参见我的回答。

换个漂白软件?我从原本换到了PictureCleaner

这种活不应该直接交给 GPT 干吗?

问:给出 Python 代码:几百个文件按 20 个一组移动到新文件夹里
答:

import os
import shutil

# 源文件夹路径
source_folder = 'path_to_source_folder'

# 目标文件夹路径
target_folder = 'path_to_target_folder'

# 获取源文件夹下的所有文件
files = os.listdir(source_folder)

# 计数器
count = 0

# 新建文件夹计数器
folder_count = 1

# 新建文件夹
new_folder = os.path.join(target_folder, f'folder_{folder_count}')
os.makedirs(new_folder, exist_ok=True)

# 移动文件
for file in files:
    # 移动文件到新文件夹
    shutil.move(os.path.join(source_folder, file), new_folder)

    count += 1

    # 如果达到 20 个文件,新建文件夹
    if count == 20:
        count = 0
        folder_count += 1
        new_folder = os.path.join(target_folder, f'folder_{folder_count}')
        os.makedirs(new_folder, exist_ok=True)

之前写过一个专门的Quicker动作

是移动到很多文件夹里还是同一个文件夹?

import os
import shutil
import glob

# 输入的文件夹
in_path = r''
# 输出的文件夹
out_path = r''

# 每个文件夹里面存放的图片的数量
file_n = 500
# 文件夹前后缀
prefix, suffix = '', ''
# 把jpg修改成你的文件后缀
img_path_list = glob.glob(os.path.join(in_path, '**/*.jpg'), recursive=True)

# 从0开始,命名为0000、0001、0002,也可以修改为任意数
n = 0
while True:
    new_dir_path = os.path.join(out_path, '%s%04d%s' % (prefix, n, suffix))
    os.makedirs(new_dir_path, exist_ok=True)
    n += 1

    length = len(glob.glob(os.path.join(new_dir_path, '*.jpg')))
    # 比如这次新建文件夹到100,下次会自动检测第100个有没有满足数量,没有的话继续添加,有的话就从101开始新建
    if length >= file_n:
        continue

    add_n = file_n - length
    for img_path in img_path_list[add_n * (-1):]:
        try:
            shutil.move(img_path, new_dir_path)
            img_path_list.pop()
        except Exception as e:
            print(e)
            continue
    if not img_path_list: break
    print(new_dir_path)

这种需求,我一般用excel+批处理解决。
移动文件的命令是 move a.jpg b/a.jpg

excel 表格第一列都填move,第二列填文件原路径,第三列填新路径。自己试一下怎么批量复制原路径、生成新路径(问GPT)。
然后复制前三列到文本文件,改后缀名为bat,双击运行就行了。

支持任意层级的目录

脚本能够运行,不过用之前必须修改一下,把第 5 行

source_folder = 'path_to_source_folder'

中的 path_to_source_folder 换成要分组的文件所在的路径;

再把第 8 行

target_folder = 'path_to_target_folder'

中的 path_to_target_folder 换成分组后文件存放的位置。

比如,要分组的文件在 D:\Data,分组后文件保存到 E:\Docs,则运行改脚本后,D:\Data 中的文件将被移动到 E:\Docs\folder_1E:\Docs\folder_2E:\Docs\folder_3 ……等文件夹中。

一直在用,然后自己加了前导 0 补齐