bat 批处理 问题。

2024-11-30 05:14:20
推荐回答(2个)
回答1:

应用前先测试,一定要备份源文件

@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

回答2:

@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

把此批处理放在文件夹“档案”旁运行,运行前请先备份数据,以防万一。

请确保一个目录下的所有子目录里面的文件的文件名不重复,否则文件将被覆盖