应用前先测试,一定要备份源文件
@echo off
set "ScDir=d:\档案"
cd /d "%ScDir%"
for /f "delims=" %%a in ('dir /a-d/s/b') do (
setlocal enableDelayedExpansion
set "Dir=%%~dpa"&&set "Dir=!Dir:~,-1!"
for /f "delims=" %%b in ("!Dir!") do set "LastDir=%%~nb"
call set "Dir=%%Dir:\!LastDir!=%%"
for /f "delims=" %%c in ("!Dir!") do set "LastSecondDir=%%~c"
robocopy /mov "!LastSecondDir!\!LastDir!" "!LastSecondDir!" "%%~nxa"
rd /q "!LastSecondDir!\!LastDir!"
endlocal
)
pause&exit
@echo off
setlocal enabledelayedexpansion
echo 正在移动文件……
for /f "delims=? tokens=* eol=?" %%a in ('dir /s /b /a-d 档案') do (
move %%a %%a\..\..\
)
echo 正在清理空目录…… 2>con 3>nul
for /f "delims=? tokens=* eol=?" %%a in ('dir /s /b 档案') do (
rd %%a
)
echo 完成。 2>con 4>con
pause
把此批处理放在文件夹“档案”旁运行,运行前请先备份数据,以防万一。
请确保一个目录下的所有子目录里面的文件的文件名不重复,否则文件将被覆盖。