将众多文件夹中的文件批量一次性提取到一个文件夹

整理群晖moments的照片,发现群晖生成了几万个文件夹,一个文件夹里若干照片,如何提取到一个文件夹?

使用了bat脚本。

新建一个文本文档,命名后缀为bat,然后粘贴以下内容,放到需要被整理目录的同级。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@echo off & setlocal enabledelayedexpansion    
if not "%~1"==":" (
    md d:\new 2>nul
    for /f "tokens=1*delims=/" %%i in ('"%~f0" :^|sort') do (
        if /i "%%i"=="!strName!" (
            set /a n+=1
            copy "%%j" "d:\new\%%~ni(!n!)%%~xi"
        ) else (
            set "n="
            copy "%%j" d:\new\
        )
        set "strName=%%i"
    )
    pause
) else (
    for /r %%i in (*) do echo %%~nxi/%%i
)

python版本,理论上linux也能用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# -*- coding:utf8 -*-

import os
import shutil


# From Mr.Song

source_path = os.path.abspath(r'D:\用户\OneDrive - wanin\桌面\a')
target_path = os.path.abspath(r'D:\Copied')

if not os.path.exists(target_path):
    os.makedirs(target_path)

if os.path.exists(source_path):
    # root 所指的是当前正在遍历的这个文件夹的本身的地址
    # dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录)
    # files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录)
    for root, dirs, files in os.walk(source_path):
        for file in files:
            src_file = os.path.join(root, file)
            shutil.copy(src_file, target_path)
            print(src_file)

print('copy files finished!')

之后再用软媒清理大师删除一下重复的文件,搞定!

软媒处理不了几万张图片,会闪退,这里推荐用DoubleKiller这个软件,能处理大量文件。

点赞
  1. Mitre说道:

    顶一下

    1. XINJIAWEI说道:

      py脚本的作者来了

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

1 × 3 =

Loading...