本帖最后由 tmplinshi 于 2013-5-12 16:13 编辑
- @echo off
- setlocal enabledelayedexpansion
-
- for /f "tokens=1,* delims=-" %%a in (' dir /a:d /b *--* ') do (
-
- rem ============================
- rem 把“--”前面的字符,再次以第一个“.”进行分解
- rem ============================
- rem
- for /f "tokens=1,* delims=." %%i in ("%%a") 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--%%b" "!final_dir!"
-
- rem ============================
- rem 显示结果
- rem ============================
- rem
- echo "%%a--%%b"
- echo md "!final_dir!"
- echo move "%%a--%%b" "!final_dir!"
- echo ----------------------------------------
- )
-
- echo,
- echo 完成!请按任意键退出...
- pause >nul
复制代码 ============================================================
创建测试文件夹:- @echo off
- rem 创建测试环境
- for %%a in (
- A0--参考工具书,A01--海洋起源,A012--航天工程,A013--的规律,A013.1--只看该作者
- A02--大写字母,A025.7.3--工程,A023--夹名称,A025--级目录,A025.7--路是在
- A1--操作,A13--同一级,A135--作文件,A135.6--下的,A025.7.4--自动的根据名称把文
- ) do md %%a
复制代码 运行结果:
"A0--参考工具书"
md ".\A0"
move "A0--参考工具书" ".\A0"
----------------------------------------
"A01--海洋起源"
md ".\A0\A01"
move "A01--海洋起源" ".\A0\A01"
----------------------------------------
"A012--航天工程"
md ".\A0\A01\A012"
move "A012--航天工程" ".\A0\A01\A012"
----------------------------------------
"A013--的规律"
md ".\A0\A01\A013"
move "A013--的规律" ".\A0\A01\A013"
----------------------------------------
"A013.1--只看该作者"
md ".\A0\A01\A013\A013.1"
move "A013.1--只看该作者" ".\A0\A01\A013\A013.1"
----------------------------------------
"A02--大写字母"
md ".\A0\A02"
move "A02--大写字母" ".\A0\A02"
----------------------------------------
"A023--夹名称"
md ".\A0\A02\A023"
move "A023--夹名称" ".\A0\A02\A023"
----------------------------------------
"A025--级目录"
md ".\A0\A02\A025"
move "A025--级目录" ".\A0\A02\A025"
----------------------------------------
"A025.7--路是在"
md ".\A0\A02\A025\A025.7"
move "A025.7--路是在" ".\A0\A02\A025\A025.7"
----------------------------------------
"A025.7.3--工程"
md ".\A0\A02\A025\A025.7\A025.7.3"
move "A025.7.3--工程" ".\A0\A02\A025\A025.7\A025.7.3"
----------------------------------------
"A025.7.4--自动的根据名称把文"
md ".\A0\A02\A025\A025.7\A025.7.4"
move "A025.7.4--自动的根据名称把文" ".\A0\A02\A025\A025.7\A025.7.4"
----------------------------------------
"A1--操作"
md ".\A1"
move "A1--操作" ".\A1"
----------------------------------------
"A13--同一级"
md ".\A1\A13"
move "A13--同一级" ".\A1\A13"
----------------------------------------
"A135--作文件"
md ".\A1\A13\A135"
move "A135--作文件" ".\A1\A13\A135"
----------------------------------------
"A135.6--下的"
md ".\A1\A13\A135\A135.6"
move "A135.6--下的" ".\A1\A13\A135\A135.6"
----------------------------------------
完成!请按任意键退出...
运行批处理后的目录树结构:
├─A0
│ ├─A0--参考工具书
│ ├─A01
│ │ ├─A01--海洋起源
│ │ ├─A012
│ │ │ └─A012--航天工程
│ │ └─A013
│ │ ├─A013--的规律
│ │ └─A013.1
│ │ └─A013.1--只看该作者
│ └─A02
│ ├─A02--大写字母
│ ├─A023
│ │ └─A023--夹名称
│ └─A025
│ ├─A025--级目录
│ └─A025.7
│ ├─A025.7--路是在
│ ├─A025.7.3
│ │ └─A025.7.3--工程
│ └─A025.7.4
│ └─A025.7.4--自动的根据名称把文
└─A1
├─A1--操作
└─A13
├─A13--同一级
└─A135
├─A135--作文件
└─A135.6
└─A135.6--下的 |