回复 5# ymica - @echo off
- set "dir=%~1"
- if not defined dir set "dir=%~dp0"
- call :recurse "%dir%" 0 "%dir%"
- pause
- exit /b
- :recurse
- setlocal
- pushd %1||goto end
- set /a "childlevel=%2+1"
- for /f "delims=" %%A in ('"2>nul,dir /ad /b"') do (
- call :recurse "%%A" %childlevel% %3
- rd /q "%%A"||echo "%%~fA"
- )
- if %2 leq 1 goto out
- set "destDir=%~3\%~1"
- if exist "%destDir%" (
- for /f "delims=" %%B in ('"2>nul,dir /a-d /b"') do (
- call :rf "%%B" "%destDir%"
- )
- ) else (
- md "%destDir%"
- move /y * "%destDir%\"
- )
- :out
- popd
- :end
- endlocal
- exit /b
- :rf
- set "fname=%~n1"
- set "fext=%~x1"
- set /a "cnt=1"
- :loop
- if exist "%~2\%fname%%fext%" (
- set "fname=%~n1_%cnt%"
- set /a "cnt+=1"
- goto loop
- ) else (
- move %1 "%~2\%fname%%fext%"
- )
- exit /b
复制代码 保留一级子目录.bat
子目录下的文件都提取到根目录下。
例如文件夹"E:\A"是根目录:可以将批处理放到“E:\A”下运行或者 给批处理传递参数 保留一级子目录.bat “E:\A” |