Board logo

标题: [文件管理] 批处理移动文件夹 [打印本页]

作者: 随风    时间: 2007-11-12 15:32     标题: 批处理移动文件夹

不破坏文件夹的结构,移动文件夹。

::
  1. @echo off
  2. ::  code  by 随风   2007-11-12   @ bbs.bathome.net
  3. color 1f&echo\
  4. echo  请输入要移动的文件夹全路径,或拖动文件夹到此窗口:
  5. set /p var=
  6. echo.&echo  请输入目标全路径: 直接回车为当前路径。
  7. set /p num=
  8. if "%num%"=="" set num=%cd%
  9. echo\
  10. set str=
  11. set var=%var:"=%
  12. if "%var:~-1%"=="\" set var=%var:~0,-1%
  13. if "%num:~-1%"=="\" set num=%num:~0,-1%
  14. cls&echo\&echo  即将移动 %var% 文件夹到 %num%
  15. echo\
  16. echo  如果移动过程遇到同名文件,请选择是覆盖原文件,还是在新文件后面加序号。
  17. echo\&echo  按 f 覆盖,其它键在新文件后面加序号:
  18. echo\
  19. set /p xuhao=
  20. set varn=%var:*:=%
  21. :lis
  22. set wjj=%varn:*\=%
  23. if not "%varn%"=="%wjj%" set varn=%wjj%&goto lis
  24. setlocal EnableDelayedExpansion
  25. for /f "delims=" %%a in ('dir /s /b /a-d "%var%"') do (
  26. set lj=%%~dpa
  27. call set lj=%%lj:!var!=%%
  28. md "!num!\!wjj!!lj!"2>nul
  29. set max=!num!\!wjj!!lj!%%~na
  30. if /i not "!xuhao!"=="f" (
  31. call :loop "%%a" "%%~xa"
  32. ) else move "%%a" "!num!\!wjj!!lj!%%~nxa"
  33. )
  34. for /f "delims=" %%a in ('dir/ad/b/s "%var%\*.*"^|sort /r') do rd/q "%%a"
  35. rd/q "%var%"
  36. color 0a&cls
  37. echo\&echo  移动完成,按 y 打开文件夹查看,按其它键退出。。。
  38. set /p xz=
  39. if /i "%xz%"=="y" start "" "%num%"
  40. exit
  41. :loop
  42. if exist "!max!!str!%~2" set /a str+=1&goto loop
  43. move %1 "!max!!str!%~2"
  44. goto :eof
复制代码

作者: 小强    时间: 2007-11-12 17:59

什么叫不破坏文件夹的结构
作者: youxi01    时间: 2007-11-12 18:08

根据他的意思,我猜应该是 文件夹之间的层次关系不变吧
比如:test1 是test的子文件夹,那么移动的时候还是这样,不知道解释的对不对?楼兄?
作者: 小强    时间: 2007-11-12 18:16

可是我试过了E:\nets\yxwg\便宜外挂  移动到D盘还是D:\便宜外挂,并没有创建\nets\yxwg\
作者: youxi01    时间: 2007-11-12 18:58

你要这样移的话,就不是移 "便宜外挂" ,而是移:“nets\”
作者: 随风    时间: 2007-11-12 19:16

回2楼
那样的话,你就要移动E:\nets 文件夹才对了
不破坏文件夹结构的意识,就是youxi 说的意识。我也不知该怎么表达了。呵。。。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2