|
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 |
|
|
fzp1978321
初级用户
积分 110
发帖 50
注册 2008-1-18
状态 离线
|
『第
18 楼』:
这个不会把目录结构也给删了吧,只是删一周前某一天的文件,是么?
|
|
2008-2-4 00:12 |
|
|
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 |
|
|
fzp1978321
初级用户
积分 110
发帖 50
注册 2008-1-18
状态 离线
|
『第
22 楼』:
如果文件的日期格式就只是如2008-1-1,2008-1-11,那就不需要进行转换,那代码如何改呢?
|
|
2008-2-4 00:44 |
|
|
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 |
|
|
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 |
|
|
fzp1978321
初级用户
积分 110
发帖 50
注册 2008-1-18
状态 离线
|
『第
29 楼』:
好象我很麻烦
刚才试着在XP下运行了下,报错.
"系统找不到指定的批处理标签转换日期格式
"此时不应有-!"
|
|
2008-2-4 01:44 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
30 楼』:
不可能呀,我都是在XP和2000 pro下测试的
莫非你的cmd代码页修改过,或者某部分多了个空格
改成英文标签
call :xxx
:xxx
|
第一高手 第二高手
我的小站
|
|
2008-2-4 01:55 |
|