今天遇到一个问题:A文件夹里面,每天都会不断的增加文件,假如A文件夹里面的文件数目超过1000个,就从中移动200个文件到B文件中(且移走的文件从最早的时间开始)!求高师指点
@echo off cd "E:\A" for /f %%A in ('dir ^| find "File(s)"') do set cnt=%%A echo File count = %cnt% IF %cnt% LEQ 1000 goto :break echo Move oldest 200 files setlocal set /a "n=0, limit=200" FOR /f "delims=" %%i IN ('DIR /A:-D /B /O:D') DO ( echo moving %%i to E:\B move /-y %%i "E:\B" 2>nul set /a "n+=1, 1/(limit-n)"||goto :break ) :break pause
按你的要求写的, 进入到A文件夹, 计算文件数量, 没超过1000退出, 超1000 则按时间排序, 循环取前200个 放入B中, 退出。
你好很高兴认识你!还有些问题想请教,如果能加你的QQ那就更好啦我的QQ354031860
@流逝的光辉岁月:
追加一句那个是按时间排序的代码??
@流逝的光辉岁月:
DIR /A:-D /B /O:D
这句是dos命令 Dir, /A attribute -D 表示 不显示目录
/B 精简显示 不显示 summary
/O 排序 D 表示按文件时间排序 由旧到新
@gunsmoke: 很感谢你,提供的答案,但是统计文件个数是错误的,只能给你一半豆子!
@流逝的光辉岁月: 我用的是英文版的windows, dos dir命令下给出文件总个数以File(s) 结尾, 中文版的可能要换成中文的。
豆子太少了 很伤心
编个程序放到.bat中执行应该更方便些吧。
(1)先判断文件夹内的文件数目
(2)>1000时,copy最早的200个到另外一个文件夹。
这个好像运行了,没有效果的
@echo off cd "C:\Users\yin\Desktop\123" for /f %%A in ('dir /W /B /A-D ^| find /V /C ""') do set cnt=%%A echo File count = %cnt% IF %cnt% LEQ 1000 goto :break echo Move oldest 200 files setlocal set /a "n=0, limit=200" FOR /f "delims=" %%i IN ('DIR /A:-D /B /O:D') DO ( echo moving %%i to C:\Users\yin\Desktop\234move /-y %%i "C:\Users\yin\Desktop\234" 2>nul set /a "n+=1, 1/(limit-n)"||goto :break ) :break pause