|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
16 楼』:
Re Will Sort:
嘿嘿,之所以我只用for /f,是因为说实在的,我一直没有太搞明白for命令的很多用法,至少我一直就不太明白for /r是什么意思,但刚才我自己试了一下,终于是明白一点儿了,所以我那条命令可以改成:
for /r %dst% %%f in (*.*) do if %%~tf LSS %1 del /f /q %%f && echo 删除 %%f
呵呵,原因就是这么简单,我对技术的追求不象Wil兄那样执着,我的目标就是完成任务就好。说实在的,我对Wil兄写批处理的技巧是打心底里佩服的,但却感觉自己永远也达不到这种水平,而且我觉得Wil兄的批处理技巧是有余了,但实在不容易让人看明白,你楼上那个批处理,直到回这个帖子的时候我才算是看明白了。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2005-8-26 20:17 |
|
|
zybird
中级用户
积分 240
发帖 53
注册 2005-1-21
状态 离线
|
『第
17 楼』:
前些天我写了两个Dos下的小程序,刚好可以完成这项任务。
批处理的内容是这样的:
******************************************************
@echo off
rem ============================================
rem 这个批处理的作用是删除d:\datafile里面
rem 最后一次修改是7天之前(不包括7天)的
rem 所有文件(包括所有子目录里的文件)
rem ============================================
rem ============================================
rem 得到7天前的日期
rem 如果今天是8月25,则7天前是日期是 8月18日
rem ============================================
GetInfo.COM /d:-7
set theDay=%year%-%mon%-%day%
rem ============================================
rem 这是在D:\datafile中搜索8天前(含8天)修改过的文件
rem 即8月17日 及 之前 修改的文件
rem ============================================
attrib/s d:\datafile\*.* -h -r -s
:Loop
dirt.com /d:-%theDay% d:\datafile\*.* /q
if %DirtRet%==Fail goto end
del %FPath%\%FName%
goto Loop
:end
******************************************************
里面的DirT.com和GetInfo.com可以到http://www.13886.com/soft//下载,
win2000的Dos里del命令好象有一个参数,可以在删除文件的时候不用用户的确认,你可以在del %FPath%\%FName%里加入那个参数
[ Last edited by zybird on 2006-5-6 at 13:38 ]
|
|
2005-8-29 13:40 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
18 楼』:
这两个命令倒挺有意思,也很有用,能不能直接用附件传到这里来,因为那个网址无法访问了。
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2005-8-29 17:02 |
|
|
zybird
中级用户
积分 240
发帖 53
注册 2005-1-21
状态 离线
|
『第
19 楼』:
Quote: | Originally posted by Climbing at 2005-8-29 05:02 PM:
这两个命令倒挺有意思,也很有用,能不能直接用附件传到这里来,因为那个网址无法访问了。 |
|
在ys168上不知道为什么总是会出现无法下载,现在我上传到这里。
如果使用的过程,有什么疑问或出现什么错误,请告诉我!谢谢!
Getinfo.com 和 dirt.com 可以直接在下面这个网址下载了!!
http://www.13886.com/soft/
[ Last edited by zybird on 2006-5-6 at 13:37 ]
|
|
2005-8-29 18:47 |
|
|
Climbing
铂金会员
网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
20 楼』:
谢谢zybird朋友,这两个命令都是用Qbasic开发的吧?
|
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2005-8-29 23:47 |
|
|
zybird
中级用户
积分 240
发帖 53
注册 2005-1-21
状态 离线
|
『第
21 楼』:
不客气!
这是用 tc++ 3.0写的
|
|
2005-8-30 13:10 |
|
|
willsort
元老会员
Batchinger
积分 4432
发帖 1512
注册 2002-10-18
状态 离线
|
『第
22 楼』:
Re All:
因为个人原因,一个星期没有来论坛了,发现变化真是不小!现在附上9楼解题思路中1提到的set /a计算日期差值的方案。至于第三方程序,zybird的程序已经很好了,向 zybird 兄致敬。
:: DateDel2.bat - 删除指定路径下指定日数以前修改的文件
:: Will Sort - 2005-9-2 - CMD@WinXP
:: 注意事项:参数%1指定日数,昨天为1,前天为2,依次类推
:: 参数%1指定文件路径,省略时将处理当前路径
:: 核心算法:Ritchie Lawrence, updated 2002-08-13. Version 1.1
::
@echo off & setlocal ENABLEEXTENSIONS
call :Date2Day %date:~0,10% sdays
set /a sdays-=%1
call :Day2Date %sdays% difdate
echo 将删除 %cd% 下 %difdate% 前的修改的以下文件:
for /r %2 %%f in (*.*) do if "%%~tf" LEQ "%difdate%" echo "%%f"
goto :EOF
:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (
set yy=%%a & set mm=%%b & set dd=%%c
)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF
:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%-%mm%-%dd%&goto :EOF
|
※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得! |
|
2005-9-2 15:25 |
|
|
smileseeker
中级用户
积分 316
发帖 83
注册 2005-3-1
状态 离线
|
『第
23 楼』:
请问下各位大侠
为什么在win2000的命令行下无法显示year mon day 等环境变量?
D:\MULTIT~1\Getinfo>getinfo /d:-2
D:\MULTIT~1\Getinfo>echo %day%
%day%
|
|
2005-10-17 19:56 |
|
|
smileseeker
中级用户
积分 316
发帖 83
注册 2005-3-1
状态 离线
|
『第
24 楼』:
Quote:
Originally posted by Climbing at 2005-8-25 17:38:
for /f "tokens=*" %f in ('dir /b/s') do @if %~tf LSS 2005-08-17 echo %~tf %f
强啊!!!
同意!!!
[ Last edited by smileseeker on 2005-10-17 at 20:12 ]
|
|
2005-10-17 20:10 |
|
|
zybird
中级用户
积分 240
发帖 53
注册 2005-1-21
状态 离线
|
『第
25 楼』:
getinfo.com目前还无法修改cmd.exe中的环境变量,cmd.exe跟dos不一样
|
|
2005-10-19 21:10 |
|
|
tianlei
新手上路
积分 10
发帖 5
注册 2005-11-9 来自 中国杭州
状态 离线
|
『第
26 楼』:
“for /f "tokens=*" %f in ('dir /b/s') do @if %~tf LSS 2005-08-17 echo %~tf %f”
里面的“%”在这里代表什么呀,请哪位指点一下?
|
|
2005-11-10 00:20 |
|
|
tyh
初级用户
积分 80
发帖 43
注册 2007-4-21
状态 离线
|
|
2007-6-8 09:35 |
|
|
ningshaody
新手上路
积分 2
发帖 1
注册 2007-10-10
状态 离线
|
『第
28 楼』:
能不删除文件夹
上面方法删除文件好用,能不能不删除文件夹?
|
|
2007-10-10 10:23 |
|
|
ribood
新手上路
积分 12
发帖 4
注册 2006-10-24
状态 离线
|
『第
29 楼』:
菜鸟请教地区为英文的操作系统 date显示为10/10/2007 wed 批处理应该怎么写??
|
|
2007-10-10 19:24 |
|
|
lzmuhioin
初级用户
积分 51
发帖 24
注册 2007-9-18
状态 离线
|
『第
30 楼』:
牛人啊,,,太强了...学得不少
|
|
2007-10-12 09:54 |
|