使用高拍仪扫描了一些文档,后续需要用「原本」处理一下,但是它的批量处理只对前20个文件有效,所以需要把几百个文件按照20一个组的形式,移动到新建文件夹里面,手动操作繁琐并且容易出错,希望有一些简单快速的方法完成。
系统是 Windows 的。
有比“Folder Splitter”更方便拆分文件夹的工具吗? - 问题求助 - 小众软件官方论坛 (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_1
、E:\Docs\folder_2
、E:\Docs\folder_3
……等文件夹中。
一直在用,然后自己加了前导 0 补齐