/*代码的目的是递归的搜索某目录,将所有的txt文件按照设定的大小阈值和个数阈值
拷贝到目标文件夹中,如果拷贝的时候出现两个同名文件要拷贝到同一个目录下,
则修改已经拷贝完的重名文件,然后再进行拷贝。
代码写的很繁琐,功能可以实现,请大家指导下风格或者比较简单点的实现。
这是我自己写的第一个批处理工具,希望各位前辈不吝赐教
我的email是[email]ssjshj@126.com[/email]
如果有疑问或者指导的地方请回复我或者联系我的邮箱
谢谢大家~~
*/
//////////////////////- :for /r 递归搜索搜索目录
- @echo off
-
- setlocal ENABLEDELAYEDEXPANSION
-
- :设置文件夹内文件的大小阈值,单位是比特
- set MaxSize=1048576
- :设置文件夹内文件的个数阈值
- set MaxNum=10
-
- set CurrentSize=0
- set CurrentNum=0
-
- set count=1
- set repeatTag=1
-
- set extension=.txt
-
- :设置log路径,以用来自动保存list.txt
- set logdir=D:\log
- :读入源文件路径和分类好的文件存放路径
- set /p sourcedir=请输入源文件路径:
-
- echo @注意!如果目的文件夹已存在,会删除后重建
- set /p destdir=请输入目的文件夹路径:
-
-
- if exist %destdir% (
- rd /s /q %destdir%
- )
-
- :echo %sourcedir%
- :echo %destdir%
-
- for /r %sourcedir% %%i in (*.txt) do (
- : @echo %%i %%~zi>>list.tmp
- set tempSize=%%~zi
- set fileName=%%~ni
- set tempDire=%%~dpi
- if !CurrentSize! GTR %MaxSize% (
- set /a count=!count!+1
- set CurrentSize=!tempSize!
- set CurrentNum=1
- )
-
- if !CurrentNum! GTR %MaxNum% (
- set /a count=!count!+1
- set CurrentSize=!tempSize!
- set CurrentNum=1
- )
-
- if !CurrentSize! LEQ %MaxSize% (
- if !CurrentNum! LEQ %MaxNum% (
- set /a CurrentSize=!CurrentSize!+!tempSize!
- set /a CurrentNum=!CurrentNum!+1
- )
- )
-
- if not exist %destdir%\!count! (mkdir "%destdir%\!count!")
-
-
- if exist %destdir%\!count!\!fileName!%extension% (
- set hour=%time:~1,1%
- set min=%time:~3,1%
- set second=%time:~6,1%
- set subsecond=%time:~10,1%
- set newname=!hour!!min!!second!!subsecond!
- pushd %destdir%\!count!&ren !fileName!%extension% !fileName!!newname!!repeatTag!%extension%&popd
- set /a repeatTag=!repeatTag!+1
- if !repeatTag! GTR 10000 ( set /a repeatTag=!repeatTag!-9999 )
- )
- copy /y %%i %destdir%\!count!
-
- )
-
- if exist %logdir%\list.txt (
- del %logdir%\list.txt
- )
-
- :echo %CurrentSize%
- :echo %CurrentNum%
- :echo %count%
-
- for /l %%a in (1,1,%count%) do @echo %destdir%\%%a>>%logdir%\list.txt
-
-
- endlocal
- set MaxNum=
- set CurrentSize=
- set CurrentNum=
- set count=
- set repeatTag=
- set extension=
- pause
复制代码 ////////////////////// |