中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-15 05:48
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 拷贝文件名含有当天日期的最新的前N个文件
楼 主 拷贝文件名含有当天日期的最新的前N个文件 发表于 2010-02-27 19:02 ·  中国 上海 鹏博士宽带
新手上路
积分 3
发帖 3
注册 2010-02-26 21:27
UID 161259
性别 男
状态 离线
拷贝文件名含有当天日期的最新的前N=20个文件到指定路径,请教

我查过之前的脚本,基本上是都是处理最新的一个文件,多个文件没有找到。

比如
D:\test文件夹下有如下文件
2010-02-27aa.txt 2010-02-01 18:00
2010-02-27bb.txt 2010-02-01 17:00
2010-02-27cc.txt 2010-02-01 16:50
2010-02-27df.txt 2010-01-01 09:00
2010-01-27re.txt 2010-01-01 09:00
2010-01-27we.txt 2010-01-01 09:00

希望执行完了之后能拷贝最新的3个文件,那就是拷贝了
2010-02-27aa.txt 2010-02-01 18:00
2010-02-27bb.txt 2010-02-01 17:00
2010-02-27cc.txt 2010-02-01 16:50

另外FOR循环中的变量该如何控制,我倒是想是不是设个计数器来标识当前拷贝了多少个文件。
请教,谢谢。
2 发表于 2010-02-27 20:06 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
1,copy命令在执行完成后,会显示一共复制成功了多少个文件
2,在复制过程中,设计每个循环仅复制一次,使用set /a a+=1来计数
3,使用for 或结合dir来获取文件的创建时间或最近修改时间,然后用if比较时间是否吻合所指定的时间段。通过不同的dir参数,以过滤文件的时间顺序,属性等等。
3 发表于 2010-02-27 21:26 ·  中国 上海 鹏博士宽带
新手上路
积分 3
发帖 3
注册 2010-02-26 21:27
UID 161259
性别 男
状态 离线
看起来有点复杂啊,我的思路是这样的,
先用for和dir控制排序
for /f %%I in ('dir /o-d D:\test\*%date:~0,10%*.txt') do
希望设定一个变量,来控制拷贝满了N=20个,就退出,
现在的问题是不知道怎么设置变量,怎么控制?请指教。谢谢
4 发表于 2010-02-27 22:02 ·  中国 上海 鹏博士宽带
新手上路
积分 3
发帖 3
注册 2010-02-26 21:27
UID 161259
性别 男
状态 离线
顶一个,谁帮我想想?
5 发表于 2010-02-27 22:20 ·  中国 吉林 延边朝鲜族自治州 延吉市 电信
银牌会员
★★★
正在学习中的菜鸟...
积分 1,039
发帖 897
注册 2009-03-01 15:34
UID 140302
性别 男
来自 在地狱中仰望天堂
状态 离线
简单的话可以在for 的内部使用set /a a+=1,并放在copy的后面
然后if !a! == 20 goto han跳出for循环进入for外的:han标签

[ Last edited by Hanyeguxing on 2010-2-27 at 22:21 ]
论坛跳转: