[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
回复 3# ymica


    都移动到根目录下可能出现同名文件覆盖

TOP

回复 5# ymica
  1. @echo off
  2. set "dir=%~1"
  3. if not defined dir set "dir=%~dp0"
  4. call :recurse "%dir%" 0 "%dir%"
  5. pause
  6. exit /b
  7. :recurse
  8. setlocal
  9. pushd %1||goto end
  10. set /a "childlevel=%2+1"
  11. for /f "delims=" %%A in ('"2>nul,dir /ad /b"') do (
  12. call :recurse "%%A" %childlevel% %3
  13. rd /q "%%A"||echo "%%~fA"
  14. )
  15. if %2 leq 1 goto out
  16. set "destDir=%~3\%~1"
  17. if exist "%destDir%" (
  18. for /f "delims=" %%B in ('"2>nul,dir /a-d /b"') do (
  19. call :rf "%%B" "%destDir%"
  20. )
  21. ) else (
  22. md "%destDir%"
  23. move /y * "%destDir%\"
  24. )
  25. :out
  26. popd
  27. :end
  28. endlocal
  29. exit /b
  30. :rf
  31. set "fname=%~n1"
  32. set "fext=%~x1"
  33. set /a "cnt=1"
  34. :loop
  35. if exist "%~2\%fname%%fext%" (
  36. set "fname=%~n1_%cnt%"
  37. set /a "cnt+=1"
  38. goto loop
  39. ) else (
  40. move %1 "%~2\%fname%%fext%"
  41. )
  42. exit /b
复制代码
保留一级子目录.bat
子目录下的文件都提取到根目录下。
例如文件夹"E:\A"是根目录:可以将批处理放到“E:\A”下运行或者 给批处理传递参数  保留一级子目录.bat “E:\A”

TOP

返回列表