中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 一个关于数据删除的问题请教.
« [1] [2] [3] [4] »
作者:
标题: 一个关于数据删除的问题请教. 上一主题 | 下一主题
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 16 楼』:  


@echo off
call :转换日期格式

>tmp.vbs echo Wscript.echo FormatDateTime (DateAdd("d",-7,Date),2)
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set aDate=%%i
del tmp.vbs
set aDate=%aDate:~2%
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir/s/b/a-d xxx\*.*') do (
    set fileDate=%%~ti
    set fileDate=!fileDate:~0,-7!
    if !fileDate:-=! LSS %aDate:-=% del /q/f "%%i"
)
pause
exit

:转换日期格式
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo [HKEY_CURRENT_USER\Control Panel\International]
>>aDate.reg echo "sShortDate"="yyyy-MM-dd"
regedit /s aDate.reg
del aDate.reg
goto:eof




第一高手    第二高手

2008-2-4 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fzp1978321
初级用户





积分 110
发帖 50
注册 2008-1-18
状态 离线
『第 17 楼』:  

太感谢了!
不过有个不情之请,能大概解释下这些代码么?
我看的不是很懂.
真的很谢谢你!

2008-2-4 00:11
查看资料  发送邮件  发短消息 网志  OICQ (195690504)  编辑帖子  回复  引用回复
fzp1978321
初级用户





积分 110
发帖 50
注册 2008-1-18
状态 离线
『第 18 楼』:  

这个不会把目录结构也给删了吧,只是删一周前某一天的文件,是么?

2008-2-4 00:12
查看资料  发送邮件  发短消息 网志  OICQ (195690504)  编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 19 楼』:  

转换日期格式为2008-01-01
用vbs获取当前日期-7天的日期为aDate变量(如果上面没有转换vbs获取日期格式是2008-1-1)
最后一个for不必解释了,把
if !fileDate:-=! LSS %aDate:-=% del /q/f "%%i"
换成
echo if !fileDate:-=! LSS %aDate:-=% del /q/f "%%i"
就一目了然了


代码运行过一次call :转换日期格式 及下面一部分可以去掉了



第一高手    第二高手

2008-2-4 00:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by fzp1978321 at 2008-2-4 00:12:
这个不会把目录结构也给删了吧,只是删一周前某一天的文件,是么?

是的



第一高手    第二高手

2008-2-4 00:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fzp1978321
初级用户





积分 110
发帖 50
注册 2008-1-18
状态 离线
『第 21 楼』:  

你真的很强大,呵呵.
明天我去WIN2000上试下.非常感谢!
有问题我会及时反馈.
那这个批处理是放在那个目录下就OK么?我想把它做成计划任务,每天定时运行.

[ Last edited by fzp1978321 on 2008-2-4 at 12:30 AM ]

2008-2-4 00:28
查看资料  发送邮件  发短消息 网志  OICQ (195690504)  编辑帖子  回复  引用回复
fzp1978321
初级用户





积分 110
发帖 50
注册 2008-1-18
状态 离线
『第 22 楼』:  

如果文件的日期格式就只是如2008-1-1,2008-1-11,那就不需要进行转换,那代码如何改呢?

2008-2-4 00:44
查看资料  发送邮件  发短消息 网志  OICQ (195690504)  编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 23 楼』:  

set fileDate=%%~ti

是修改日期吧。因为不是创建日期一直没有写。。。

2008-2-4 00:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 24 楼』:  

这个2000 XP通用的,且修改时间后再还原,保持系统默认状态
@echo off
regedit /e "%temp%\bak.reg" "HKEY_CURRENT_USER\Control Panel\International"
call :DateFormat

>tmp.vbs echo Wscript.echo FormatDateTime (DateAdd("d",-7,Date),2)
for /f "delims=" %%i in ('cscript.exe //nologo tmp.vbs') do set aDate=%%i
del tmp.vbs
ver|find "2000">nul&&set aDate=%aDate:~2%
set aDate=%aDate:-=%
setlocal EnableDelayedExpansion
for /f "delims=" %%i in ('dir/s/b/a-d xxx\*.*') do (
    set fileDate=%%~ti
    set fileDate=!fileDate:~0,-6!
    set fileDate=!fileDate:-=!
    if !fileDate! LSS %aDate%  del /q/f "%%i"
)
regedit /s "%temp%\bak.reg"
del /q "%temp%\bak.reg"
pause
exit

:DateFormat
>aDate.reg echo REGEDIT4
>>aDate.reg echo.
>>aDate.reg echo [HKEY_CURRENT_USER\Control Panel\International]
>>aDate.reg echo "sShortDate"="yyyy-MM-dd"
>>aDate.reg echo "sDate"="-"
regedit /s aDate.reg
del aDate.reg
goto:eof
[ Last edited by fastslz on 2008-2-4 at 02:28 AM ]



第一高手    第二高手

2008-2-4 01:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fzp1978321
初级用户





积分 110
发帖 50
注册 2008-1-18
状态 离线
『第 25 楼』:  

那比如我要删除D:\FTPSERVER内7天前生成的所有文件,我是不是将这个批处理放在D:\FTPSERVER这个目录中,然后做个计划任务就行了呢?不会7天后把自己给删掉吧?
想确认下这问题

2008-2-4 01:20
查看资料  发送邮件  发短消息 网志  OICQ (195690504)  编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 26 楼』:  



  Quote:
Originally posted by slore at 2008-2-4 00:45:
set fileDate=%%~ti

是修改日期吧。因为不是创建日期一直没有写。。。

是的
如果那样的,楼主要创建时间的话通过call 标签dir /tc获得,但是理论上每7天删除的话修改时间也是可行的



第一高手    第二高手

2008-2-4 01:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 27 楼』:  



  Quote:
Originally posted by fzp1978321 at 2008-2-4 01:20:
那比如我要删除D:\FTPSERVER内7天前生成的所有文件,我是不是将这个批处理放在D:\FTPSERVER这个目录中,然后做个计划任务就行了呢?不会7天后把自己给删掉吧?
想确认下这问题

('dir/s/b/a-d xxx\*.*^|find /v /i ".bat"')
排除.bat文件



第一高手    第二高手

2008-2-4 01:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fzp1978321
初级用户





积分 110
发帖 50
注册 2008-1-18
状态 离线
『第 28 楼』:  

长见识了,差距还真不是一年两年的啊...
去2000下测试成功后,明天过来结贴.
非常感谢!

2008-2-4 01:31
查看资料  发送邮件  发短消息 网志  OICQ (195690504)  编辑帖子  回复  引用回复
fzp1978321
初级用户





积分 110
发帖 50
注册 2008-1-18
状态 离线
『第 29 楼』:  

好象我很麻烦
刚才试着在XP下运行了下,报错.
"系统找不到指定的批处理标签转换日期格式
"此时不应有-!"

2008-2-4 01:44
查看资料  发送邮件  发短消息 网志  OICQ (195690504)  编辑帖子  回复  引用回复
fastslz
铂金会员

DOS一根葱


积分 5493
发帖 2315
注册 2006-5-1
来自 上海
状态 离线
『第 30 楼』:  

不可能呀,我都是在XP和2000 pro下测试的
莫非你的cmd代码页修改过,或者某部分多了个空格
改成英文标签

call :xxx

:xxx



第一高手    第二高手

2008-2-4 01:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: