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

呵呵 你这东西是抄袭的吧?

  1. @echo off
  2. :: Code by JM 2006-12-17 CMD@XP
  3. :: 出处:
  4. mode con lines=28
  5. title 文件归类整理器-test
  6. ::===================================================================================
  7. :: 目的:
  8. ::
  9. ::     对当前目录及其所有子目录下的文件进行归类。
  10. ::
  11. :: 整理结果:
  12. ::
  13. ::   在当前目录及其子目录下,以该文件夹里的文件类型名为文件夹名,在该文件
  14. :: 所在目录下建立形如 exe文件、rar文件 之类的文件夹,不同类型的文件移动到
  15. :: 对应的文件夹下。
  16. ::   如果以后增添了新文件,再次运行本脚本时,若该位置已经存在对应的文件夹,
  17. :: 将把新添的文件保存在该文件夹下;若不存在对应的文件夹,将新建文件夹以保存
  18. :: 该文件。
  19. ::
  20. :: 已发现的问题:
  21. ::   ① move 命令无法移动 系统 或 隐藏 属性的文件;
  22. ::   ② 不会整理无类型的文件。
  23. ::
  24. :: 下一版将要实现的功能:
  25. ::
  26. ::   ① 对以当前目录为起点,指定层深的子目录进行整理;
  27. ::   ② 整理指定类型以外的文件。
  28. ::
  29. :: 更新历史:
  30. ::
  31. :: 06.12.17
  32. ::   修正了遇到无类型文件会自动退出的错误;更新了获取相对路径的代码,效率有所提升;
  33. ::
  34. :: 06.12.16
  35. ::   增添了如下功能(V1.1):
  36. ::     ① 能指定要处理的文件夹以及保存路径;
  37. ::     ② 能指定要整理的类型;
  38. ::     ③ 跳过已经整理的文件;
  39. ::
  40. :: 06.12.15
  41. ::   在只能整理当前目录下不同类型文件的基础上,写出了能对当前目录及其所有子目录下的
  42. :: 不同类型文件进行操作的代码,此为V1.0;
  43. ::===================================================================================
  44. :note
  45. cls
  46. title 文件归类整理器-说明
  47. echo                               ╭────────╮
  48. echo           ╭─────────┤  功 能 说  明  ├─────────╮
  49. echo           │                  ╰────────╯                  │
  50. echo           │                                                        │
  51. echo           │        本程序能对当前目录及其所有子目录下的文件进行    │
  52. echo           │                                                        │
  53. echo           │    归类,具体效果如下:                                │
  54. echo           │                                                        │
  55. echo           │        在当前目录及其子目录下,以该文件夹里的文件      │
  56. echo           │                                                        │
  57. echo           │    类型名为文件夹名,在该文件所在目录下建立形如        │
  58. echo           │                                                        │
  59. echo           │    exe文件、rar文件 之类的文件夹,不同类型的文件移     │
  60. echo           │                                                        │
  61. echo           │    动到对应的文件夹下,以保持原来的文件夹结构不变。    │
  62. echo           │                                                        │
  63. echo           │        如果以后增添了新文件,再次运行本脚本时,若      │
  64. echo           │                                                        │
  65. echo           │    该位置已经存在对应的文件夹,将把新添的文件保存      │
  66. echo           │                                                        │
  67. echo           │    在该文件夹下;若不存在对应的文件夹,将新建文件      │
  68. echo           │                                                        │
  69. echo           │    夹以保存该文件。                                    │
  70. echo           │                                                        │
  71. echo           ╰────────────────────────────╯
  72. echo.
  73. echo                                                按任意键进入下一步...
  74. pause>nul
  75. :config
  76. cls
  77. title 文件归类整理器-参数设置
  78. echo.
  79. echo.
  80. echo.
  81. echo.
  82. echo         请把要处理的文件夹拉到本窗口(直接回车将处理当前目录):
  83. echo.
  84. set "source_path=%cd%"
  85. set /p source_path=                 
  86. echo.
  87. echo          请输入保存位置绝对路径(直接回车将保存在源文件夹下):
  88. set destination_path=
  89. set /p destination_path=                 
  90. echo.
  91. echo             请输入要处理的文件类型,多个类型以空格分隔
  92. echo.
  93. echo                (如:rar exe;直接回车将处理所有类型):
  94. echo.
  95. set type_included=
  96. set /p type_included=                 
  97. if exist "%source_path:"=%" (
  98.     set "source_path=%source_path:"=%\"
  99. ) else goto config
  100. set "source_dir=%source_path:"=%"
  101. rem ======= 计算源文件夹的层深 =======
  102. set source_layers=0
  103. set "source_dir_tmp=%source_dir%"
  104. :get_source_layers
  105. set "source_dir_tmp=%source_dir_tmp:*\=%"
  106. set /a source_layers+=1
  107. if not "%source_dir_tmp%"=="" goto get_source_layers
  108. if defined destination_path set destination=yes
  109. for /f "delims=" %%i in ('dir /a-d /b /s /oe "%source_path%"') do (
  110.     set "nx_name=%%~nxi"
  111.     call :build_dir "%%~xi" "%%~dpi"
  112.     set file_type=%%~xi
  113.     set "source_path=%%~dpi"
  114. )
  115. goto :eof
  116. rem ======= 按文件类型创建文件夹 =======
  117. :build_dir
  118. set include=
  119. for %%i in (%type_included%) do if /i "%1"==".%%i" set include=yes
  120. if defined type_included if not defined include goto :eof
  121. set types=%1
  122. if %types%=="" goto :eof
  123. set types=%types:~2,-1%
  124. if not defined destination set destination_path=%2
  125. set "destination_path=%destination_path:"=%"
  126. if not "%destination_path:~-1%"=="\" set "destination_path=%destination_path%\"
  127. rem ======= 获取文件在源文件中的相对位置 =======
  128. set source_sub_path=%2
  129. set "source_sub_path=%source_sub_path:"=%"
  130. set num=0
  131. :get_source_sub_path
  132. set "source_sub_path=%source_sub_path:*\=%"
  133. set /a num+=1
  134. if not %num% equ %source_layers% goto get_source_sub_path
  135. rem ======= 获取文件所在路径的目录名 =======
  136. for /f "delims=" %%i in ("%destination_path:~0,-1%") do set "source_name=%%~nxi"
  137. :: 通过对比文件类型名和文件所在路径的目录名来判断哪些文件已经整理过
  138. if "%source_name%"=="%types%文件" goto :eof
  139. :: 判断文件所在位置是否发生了变化
  140. if %2=="%source_path%" (set chang_dir=) else set chang_dir=yes&set file_type=
  141. :: 判断要处理的文件是不是批处理文件自身
  142. if "%destination_path%%nx_name%"=="%~f0" (set file_self=yes) else set file_self=
  143. :: 判断文件类型是否发生了变化
  144. if /i "%1"=="%file_type%" (set same_type=yes) else set same_type=
  145. if not defined destination set source_sub_path=
  146. if not defined chang_dir (
  147.     if not defined file_self if not defined same_type md "%destination_path%%source_sub_path%%types%文件" 2>nul
  148. ) else (
  149.     if not defined file_self if not defined same_type md "%destination_path%%source_sub_path%%types%文件" 2>nul
  150. )
  151. if not defined file_self move /-y %2"%nx_name%" "%destination_path%%source_sub_path%%types%文件"
  152. goto :eof
  153. :: source_path:源文件夹路径
  154. :: source_layers:源文件夹的层深
  155. :: destination_path:目的文件夹路径
  156. :: include:要排除的文件类型
  157. :: destination:标志变量,用来判断是否指定目的文件夹路径
  158. :: nx_name:源文件的文件名和后缀名组合
  159. :: file_type:源文件的类型
  160. :: source_sub_path:源文件相对于源文件夹的路径
  161. :: source_path_tmp:源文件夹路径的临时变量
  162. :: source_name:源文件名
  163. :: source_name_tmp:源文件名临时变量
  164. :: chang_dir:判断文件夹是否发生变化的标志
  165. :: same_type:判断文件类型是否相同的变量
  166. :: file_self:判断是不是批处理文件自身的变量
  167. :: included:要处理的文件类型
  168. :: type_included:决定是否处理当前文件类型的标志
复制代码


你和这个批处理 异曲同工罢了
1

评分人数

TOP

返回列表