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

[文件操作] [分享]批处理修改-同类文件处理

/*代码的目的是递归的搜索某目录,将所有的txt文件按照设定的大小阈值和个数阈值
  拷贝到目标文件夹中,如果拷贝的时候出现两个同名文件要拷贝到同一个目录下,
  则修改已经拷贝完的重名文件,然后再进行拷贝。
  代码写的很繁琐,功能可以实现,请大家指导下风格或者比较简单点的实现。
   这是我自己写的第一个批处理工具,希望各位前辈不吝赐教
  我的email是[email]ssjshj@126.com[/email]
   如果有疑问或者指导的地方请回复我或者联系我的邮箱
  谢谢大家~~
*/

//////////////////////
  1. :for /r 递归搜索搜索目录
  2. @echo off
  3. setlocal ENABLEDELAYEDEXPANSION
  4. :设置文件夹内文件的大小阈值,单位是比特
  5. set MaxSize=1048576
  6. :设置文件夹内文件的个数阈值
  7. set MaxNum=10
  8. set CurrentSize=0
  9. set CurrentNum=0
  10. set count=1
  11. set repeatTag=1
  12. set extension=.txt
  13. :设置log路径,以用来自动保存list.txt
  14. set logdir=D:\log
  15. :读入源文件路径和分类好的文件存放路径
  16. set /p sourcedir=请输入源文件路径:
  17. echo @注意!如果目的文件夹已存在,会删除后重建
  18. set /p destdir=请输入目的文件夹路径:
  19. if exist %destdir% (
  20. rd /s /q %destdir%
  21. )
  22. :echo %sourcedir%
  23. :echo %destdir%
  24. for /r %sourcedir% %%i in (*.txt) do (
  25. :   @echo %%i %%~zi>>list.tmp
  26.     set tempSize=%%~zi
  27.     set fileName=%%~ni
  28.     set tempDire=%%~dpi
  29. if !CurrentSize! GTR %MaxSize% (
  30.     set /a count=!count!+1
  31.     set CurrentSize=!tempSize!
  32.     set CurrentNum=1
  33. )    
  34. if !CurrentNum! GTR %MaxNum% (
  35.     set /a count=!count!+1
  36.     set CurrentSize=!tempSize!
  37.     set CurrentNum=1
  38. )
  39. if !CurrentSize! LEQ %MaxSize% (
  40.    if !CurrentNum! LEQ %MaxNum% (
  41.        set /a CurrentSize=!CurrentSize!+!tempSize!
  42.        set /a CurrentNum=!CurrentNum!+1
  43.    )
  44. )
  45. if not exist %destdir%\!count! (mkdir "%destdir%\!count!")
  46. if exist %destdir%\!count!\!fileName!%extension% (
  47.     set hour=%time:~1,1%
  48.     set min=%time:~3,1%
  49.     set second=%time:~6,1%
  50.     set subsecond=%time:~10,1%
  51.     set newname=!hour!!min!!second!!subsecond!
  52.     pushd %destdir%\!count!&ren !fileName!%extension% !fileName!!newname!!repeatTag!%extension%&popd
  53.     set /a repeatTag=!repeatTag!+1
  54.     if !repeatTag! GTR 10000 ( set /a repeatTag=!repeatTag!-9999 )
  55. )
  56.     copy /y %%i %destdir%\!count!
  57. )
  58. if exist %logdir%\list.txt (
  59. del %logdir%\list.txt
  60. )
  61. :echo %CurrentSize%
  62. :echo %CurrentNum%
  63. :echo %count%
  64. for /l %%a in (1,1,%count%) do @echo %destdir%\%%a>>%logdir%\list.txt
  65. endlocal
  66. set MaxNum=
  67. set CurrentSize=
  68. set CurrentNum=
  69. set count=
  70. set repeatTag=
  71. set extension=
  72. pause
复制代码
//////////////////////
1

评分人数

大家帮帮忙...我想学的稍微专业点
我觉得如果高手来写的话应该很简短

TOP

4# zm900612
不好意思 第一次发帖 没有看版规
这样行了么

TOP

8# CUer
谢谢 我关注下你提的地方

TOP

返回列表