中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]按文件的修改日期进行备份的批处理
作者:
标题: [已结]按文件的修改日期进行备份的批处理 上一主题 | 下一主题
gdou007
新手上路





积分 4
发帖 3
注册 2008-12-11
状态 离线
『楼 主』:  [已结]按文件的修改日期进行备份的批处理

将D盘DATA下所有最近两天修改的文件,COPY到E盘一个以当天日期命名的目录中

已知:

1、新建一个以当前日期命名的目录
      mkdir E:\%date:~0,10%
   
2、将D盘DATA下所有最近两天修改的文件COPY到新建的目录中

????请教各位DOS高手,如何判断哪些文件是最近两天修改过的文件???

????如何将这些文件COPY到新建的目录中???

[ Last edited by HAT on 2009-2-10 at 22:26 ]

2009-2-10 16:28
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 2 楼』:  

datex 计算日期
直接用RAR 命令打包最省事




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2009-2-10 17:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zhengqian529
初级用户





积分 100
发帖 93
注册 2009-1-14
来自 湖南
状态 离线
『第 3 楼』:  

讲一下思路
1. dir /a /s /o-d "d:\data">>test.txt   ::将data文件夹下面的文件及子文件夹信息全部保存到test.txt文件

2. findstr "[0-9]*\/[0-9]*\/[0-9]*" test.txt>>a.txt ::将带有日期格式的行存入a.txt文件

3. for /f "delims=" %%i in (a.txt) do (
         for /f "tokens=4 delims= " %%j in ("%%i") do (
         if "%%j" NEQ "<DIR>" echo %%i>>test1.txt
         )
    )
::这里就是将a.txt里面包含文件的行取出来,去除一些不是文件的或文件夹。

4. 在test1.txt里面取日期格式,**/**/****,然后调用比较日期的bat函数,这个好像函数库里面有。去查查吧。

2009-2-10 18:27
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (250988158)  编辑帖子  回复  引用回复
gdou007
新手上路





积分 4
发帖 3
注册 2008-12-11
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by yishanju at 2009-2-10 17:08:
datex 计算日期
直接用RAR 命令打包最省事


非常感谢2楼的热心朋友!谢谢!用RAR命令打包真的很省事,可是其中的目录好像打包不了,只能打包文件。




2009-2-10 20:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
gdou007
新手上路





积分 4
发帖 3
注册 2008-12-11
状态 离线
『第 5 楼』:  

rar a -r -ta%date% %date% d:\


搞定了!


2009-2-10 21:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 6 楼』:  来个纯批的

刚写好,贴子就结了。还是帖出来吧,留着没用

@echo off
::转存d:\data\前两修改的文件到e:\aa\今天日期为名的目录,
::如果目标目录不存在则自动新建。
set date=
set ms= 31 28 31 30 31 30 31 31 30 31 30 31
set/a d=1%date:~8,2%-102,m=1%date:~5,2%-100,y=%date:~0,4%
set/a vy=y%%4,vm=(m+10)%%12*3
if %vy%==0 set ms=%ms:28=29%
call set vm=%%ms:~%vm%,3%%
if %d% lss 1 set /a d=d+vm,m-=1
if %m% lss 1 set /a m=m+12,y-=1
if %m% lss 10 set m=0%m%
if %d% lss 10 set d=0%d%
set date-2=%y%-%m%-%d%
::上面取得前两天的日期
::bat 处理日期太麻烦了!涉及到月份不同,和闰年问题。

for %%a in (d:\data\*.*) do if %%~ta geq %date-2% xcopy /y %%a E:\aa\%date:~0,10%\



精简
[你的+我的+他的]=>[大家的]    个人网志   
2009-2-10 22:32
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: