首页 新闻 会员 周边

怎样快速学习解决.bat问题

0
悬赏园豆:100 [已解决问题] 解决于 2013-03-26 15:47

今天遇到一个问题:A文件夹里面,每天都会不断的增加文件,假如A文件夹里面的文件数目超过1000个,就从中移动200个文件到B文件中(且移走的文件从最早的时间开始)!求高师指点

流逝的光辉岁月的主页 流逝的光辉岁月 | 初学一级 | 园豆:95
提问于:2013-03-24 20:17
< >
分享
最佳答案
1
@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中, 退出。

收获园豆:50
gunsmoke | 老鸟四级 |园豆:3592 | 2013-03-26 09:25

你好很高兴认识你!还有些问题想请教,如果能加你的QQ那就更好啦我的QQ354031860

流逝的光辉岁月 | 园豆:95 (初学一级) | 2013-03-26 10:19

@流逝的光辉岁月:

追加一句那个是按时间排序的代码??

流逝的光辉岁月 | 园豆:95 (初学一级) | 2013-03-26 10:51

@流逝的光辉岁月: 

DIR /A:-D /B /O:D     
这句是dos命令 Dir, /A attribute -D 表示 不显示目录
/B 精简显示 不显示 summary
/O 排序 D 表示按文件时间排序 由旧到新
gunsmoke | 园豆:3592 (老鸟四级) | 2013-03-26 11:55

@gunsmoke: 很感谢你,提供的答案,但是统计文件个数是错误的,只能给你一半豆子!

流逝的光辉岁月 | 园豆:95 (初学一级) | 2013-03-26 15:49

@流逝的光辉岁月: 我用的是英文版的windows, dos dir命令下给出文件总个数以File(s) 结尾,  中文版的可能要换成中文的。

豆子太少了 很伤心

gunsmoke | 园豆:3592 (老鸟四级) | 2013-03-27 08:17
其他回答(4)
0

编个程序放到.bat中执行应该更方便些吧。

aloneone | 园豆:221 (菜鸟二级) | 2013-03-24 21:52
0

(1)先判断文件夹内的文件数目

(2)>1000时,copy最早的200个到另外一个文件夹。

Delcpp | 园豆:202 (菜鸟二级) | 2013-03-24 23:48
0

这个好像运行了,没有效果的

收获园豆:50
shoupifeng | 园豆:260 (菜鸟二级) | 2013-03-26 14:22
0
@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
流逝的光辉岁月 | 园豆:95 (初学一级) | 2013-03-26 15:46
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册