中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-05 11:37
48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 如何删除以系统日期创建的前一天的文件夹
可打印版本  1,381 / 13
第1楼 joshualaw 发表于 2007-08-03 23:54
初级用户 发帖 62 积分 132
如何删除以系统日期创建的前一天的文件夹
假设今天的日期是2007-08-03, 在C:\123\会以系统日期创建的文件夹,如:2007-08-03,怎样只删除前一天的文件夹及该文件夹下的所有文件,如:只删除 2007-08-02, 当天 2007-08-03 的不能被删除.

[ Last edited by joshualaw on 2007-8-3 at 11:55 PM ]
第2楼 jmz573515 发表于 2007-08-04 10:08
银牌会员 发帖 464 积分 1,212
VBS得到前一天的日期比较简单
msgbox date-1
第3楼 joshualaw 发表于 2007-08-04 10:28
初级用户 发帖 62 积分 132
Originally posted by jmz573515 at 2007-8-4 10:08 AM:
VBS得到前一天的日期比较简单
msgbox date-1



能用P处理吗?因为我想把这一命令放在同一P处理里面去运行
第4楼 jmz573515 发表于 2007-08-04 10:38
银牌会员 发帖 464 积分 1,212
不好意思,我对批更是一窍不通,帮不了你。
第5楼 joshualaw 发表于 2007-08-04 10:48
初级用户 发帖 62 积分 132
Originally posted by jmz573515 at 2007-8-4 10:38 AM:
不好意思,我对批更是一窍不通,帮不了你。


不要紧啊!还是谢谢你的热心啊!看看其他兄弟能否帮忙啊,本人太菜了也想不出来啊!
第6楼 slore 发表于 2007-08-04 11:47
铂金会员 发帖 2,478 积分 5,212
P可以,只是……每个月的天数不固定,所以对1号会有点麻烦……尤其是3月的话
第7楼 joshualaw 发表于 2007-08-04 12:34
初级用户 发帖 62 积分 132
Originally posted by slore at 2007-8-4 11:47 AM:
P可以,只是……每个月的天数不固定,所以对1号会有点麻烦……尤其是3月的话



能否把代码写在这儿啊,至于1号很麻烦话,到时我用手工删除啊
第8楼 slore 发表于 2007-08-04 13:44
铂金会员 发帖 2,478 积分 5,212
@echo off
set Year=%date:~0,4%
set Month=%date:~5,2%
set Day=%date:~8,2%
set /a YstDay=Day-1
echo %Year% %Month% %Day% %YstDay%
pause

所以如果是1号,那么昨天可能是30,31或者28,29……日期牵扯到2月就麻烦了。
第9楼 joshualaw 发表于 2007-08-04 17:29
初级用户 发帖 62 积分 132
在试运行后,发现以下问题啊!
1》当两个日期之差为位数时,怎样把日期前面的0显示出来,例如:YstDay=Day-1 =09

2》当天数正好等于本月份数时,例如:2007-08-08, 或者两天之差等于本月份数时,例如: 2007-08-09 YstDay=Day-1=2007-08-08显示出来的日期有问题啊,也可能是比较复杂的原因吧。

3》关键是把 %Year% %Month% %YstDay% 付给某一变量,例如:
set datevar=%Year%-%Month%-%YstDay%
echo %datevar%

在上面 1》, 2》 中,要使变量 %datevar% 分别是:

2007-08-09

2007-08-07,2007-08-08

然后进入相应的目录删除即可,如太复杂了话,能否考虑下面的啊。

刚刚搜索了一下,发现zybird 兄以前发表的可能较简单和实用啊,但有两个命令(GetInfo.COMdirt.com)不能找到啊,那位能分享一下啊和告知这两个命令有无OS的限止, 也引用如下:

批处理的内容是这样的:
******************************************************
@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

[ Last edited by joshualaw on 2007-8-4 at 05:43 PM ]
第10楼 ccwan 发表于 2007-08-04 18:10
金牌会员 发帖 1,160 积分 2,725 来自 河北廊坊
willsort的代码楼主没有搜索到?
第11楼 aspirer 发表于 2007-08-04 19:51
初级用户 发帖 35 积分 72
Why not use tool on windows 2003 ?
You can try "forfiles.exe"
第12楼 joshualaw 发表于 2007-08-04 19:59
初级用户 发帖 62 积分 132
Originally posted by ccwan at 2007-8-4 06:10 PM:
willsort的代码楼主没有搜索到?
第13楼 zxlxsqzy 发表于 2007-08-05 17:16
初级用户 发帖 47 积分 126
我提一个设想
把日期先转化成数字 比如2007-08-01先转化成20070801, 2007-08-05转化成20070805,这样的话今天的日期转化的数字肯定会比昨天的日期转化的数字要大
结果出来了
只要把今天的日期转化的数字和那些文件夹名字转化出来的数字对比,比今天小的全部删除掉.这样不会有2月份的牵涉.
第14楼 wudixin96 发表于 2007-08-05 17:25
银牌会员 发帖 931 积分 1,928
呵呵。20070801-1是多少?

20070800啊,没有
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023