- @echo off
- setlocal enabledelayedexpansion
-
- for /f "tokens=*" %%a in (' dir /a:d /b *--* ') do (
-
- rem 把文件名中的“--”替换成“|”
- set FullName=%%a
- set "FullName=!FullName:--=|!"
-
- rem 用“|”分割左右字符
- for /f "tokens=1,2 delims=|" %%a in ("!FullName!") do (
- set name_left=%%a
- set name_right=%%b
- )
-
- rem 去掉 []{}-
- for /f "delims=[]{}" %%a in ("!name_left!") do (
- set name_left_clean=%%a
- set name_left_clean=!name_left_clean:-=!
- )
-
- rem ============================
- rem 把“--”前面的字符,再次以第一个“.”进行分解
- rem ============================
- rem
- for /f "tokens=1,* delims=." %%i in ("!name_left_clean!") do (
- set dir1=%%i
- set dir2=%%j
- )
-
- rem ============================
- rem 计算第一个“.”前面的字符个数
- rem ============================
- rem
- set str=!dir1!
-
- rem -------------- 计算字符个数 --------------
- set len=0
-
- for %%a in (2048 1024 512 256 128 64 32 16) do (
- if "!str:~%%a!" neq "" (
- set /a len += %%a
- set str=!str:~%%a!
- )
- )
- set str=!str!fedcba9876543210
- set /a len += 0x!str:~16,1!
- rem -------------------------------------------
-
- rem ============================
- rem 构建文件夹
- rem ============================
- rem
- set L=!dir1:~0,1!
- set d1=.
- for /l %%a in (1 1 !len!) do (
- set d1=!d1!\!L!!dir1:~1,%%a!
- )
-
- set d2=
- if defined dir2 (
- set _str=!dir1!
- for %%a in (!dir2:.^=,!) do (
- set d2=!d2!\!_str!.%%a
- set _str=!_str!.%%a
- )
- )
-
- set final_dir=!d1!!d2!
-
- rem ============================
- rem 创建文件夹,并移动文件夹
- rem ============================
- rem
- md "!final_dir!" 2>nul
- move "%%a" "!final_dir!"
-
- rem ============================
- rem 显示结果
- rem ============================
- rem
- echo "%%a"
- echo md "!final_dir!"
- echo move "%%a" "!final_dir!"
- echo ----------------------------------------
- )
-
- echo,
- echo 完成!请按任意键退出...
- pause >nul
复制代码 运行批处理后的目录树结构:
├─A0
│ ├─A0--为何
│ ├─A01
│ │ ├─A01--有时
│ │ ├─A012
│ │ │ └─A012--学习
│ │ └─A013
│ │ ├─A013.1
│ │ │ └─A013.1--感到
│ │ └─[A013]--批处理
│ └─A02
│ ├─A02--很吃力
│ ├─A023
│ │ └─A023--是因为
│ └─A025
│ ├─A025.7
│ │ ├─A025.7--愚钝
│ │ ├─A025.7.3
│ │ │ └─A025.7.3--还是
│ │ └─A025.7.4
│ │ └─A025.7.4--因为
│ └─{A025}--资质
├─A1
│ ├─A-1--批处理
│ ├─A1--不够
│ └─A13
│ ├─A135
│ │ ├─A135--苍天
│ │ └─A135.6
│ │ └─{A135.6}--求解
│ └─[A13]--聪明
├─A2
│ └─A-2--论坛
└─A3
└─A-3--求学 |