bat实例:用windows批处理将文件分组

上一次,使用bat来将txt文件给合并起来,而这次又有个小需求要将某目录下的大数量的指定类型文件(比如1w张图片,或者2w个xml)拆分到多个文件夹中。

第一期先实现了个简单的按数量拆分的批处理文件,后面根据需求可以再过滤文件修改时间,文件名等(不过如果需求真的到了那么复杂,可能会换用python来写)。

代码如下

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
26
27
28
29
30
31
32
33
34
35
36
37
@echo off 
rem
set usage=Usage:split_folder 源文件夹(可加通配符) 目标文件夹

rem 待拆分的源文件夹
set src=%1%

rem 拆分的目标文件夹
set dest=%2%

rem 检查参数
if {%src%} == {} echo "%usage%" && goto end
if {%dest%} == {} echo "%usage%" && goto end

rem 每一页条数
set page_count=2

rem 起始页码
set cur_page=0

rem 起始页内索引
set index=0

SETLOCAL ENABLEDELAYEDEXPANSION

rem 循环处理列举出来的文件,如有特殊需求,可改下面的copy语句
for /f "delims=" %%i in ('dir /b /s /a-d %src%') do (
set /a index = !index! + 1
set /a cur_page = !index! / %page_count%
if not exist %dest%\!cur_page! mkdir %dest%\!cur_page!

copy "%%i" "%dest%\!cur_page!\%%~nxi"
)

:end
pause
)