批处理笔记(5) - 根据文件名自动创建目录存放文件

以前给画家杨彦作助理,要维护杨老师几十年的电子作品数据,若干文件,但是,有一定规则,如有按年份命名,这样,根据"tokens=1,* delims=-"按长度按指定字符切分文件名,自动创建年份的目录,保存对应的所有文件。

1
2
3
1998-001.jpg ~ 1998-xxx.jpg
1999-001.jpg ~ 1999-xxx.jpg
...

代码实现,按需设定切分规则。

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
@echo off
@REM @Author: xianghongai@gmail.com
title 根据文件名自动创建目录存放文件 by:小可(xianghongai@gmail.com)
@echo 根据文件名自动创建目录存放文件
@echo -------------------------------------

:GTBegin
@echo 默认处理目录下所有格式文件,确定继续?(y/n)
set /p GTConfirm=
if "%GTConfirm%"=="y" goto GTYES
if "%GTConfirm%"=="Y" goto GTYES
if "%GTConfirm%"=="n" goto GTNO
if "%GTConfirm%"=="N" goto GTNO
echo 请输入正确的指令
pause >nul
goto GTBegin

:GTYES
@echo -------------------------------------
set /p FilePath=需要处理的目录:
cd /d %FilePath%
for /f "tokens=1,* delims=-" %%J in ('dir /b *.*') do (
if not exist "%%J\" md "%%J"
move /-y "%%J-%%K" "%%J"
)
echo. :) 搞定
pause >nul
exit

:GTNO
exit

(本篇结束)

许可协议:自由转载-保持署名-非商业性使用-禁止演绎 (CC BY-NC-ND 4.0)

By 小可 from https://xinlu.ink/tech/batch-in-action-5-create-folder-using-part-of-filename-and-move-file-into.html