![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-03 03:28 |
共 48,038 主题排行 / 350,123 发帖 / 今日 1 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 文件生成后100天自动删除指定文件,不能在垃圾桶里 |
| 可打印版本 5,258 / 21 |
| 第1楼 xg19760104 | 发表于 2007-01-14 22:24 |
| 新手上路 发帖 2 积分 6 来自 广州市 | |
|
文件生成后100天自动删除指定文件,不能在垃圾桶里 因工作需要,有大量的电脑在生成指定文件后100天要手动删除,老是有的机子不记的删,那位高人指点一下,文件记时删除,但不能给杀毒软件当病毒杀了
|
|
| 第2楼 tghksj | 发表于 2007-01-14 23:55 |
| 社区乞丐 发帖 90 积分 -49 | |
|
问题的关键在于判断,今天的100天前是什么日期.
关系到日期个位和十位28,29,30,31进,去0的判断,百位12进,去0的判断 我感觉这个关键点不是用批处理能够轻松实现的. |
|
| 第3楼 namejm | 发表于 2007-01-15 00:13 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
还有平年闰年的判断,思路虽然简单,但是代码将会十分烦琐。
|
|
| 第4楼 scriptor | 发表于 2007-01-15 00:14 |
| 银牌会员 发帖 555 积分 1,187 | |
|
一个更直接的办法是:
每三个月运行一次! schtasks /create /tn "My App" /tr "你要执行的程序的全路经" /sc monthly /mo 3 |
|
| 第5楼 scriptor | 发表于 2007-01-15 00:18 |
| 银牌会员 发帖 555 积分 1,187 | |
|
2,3 楼
看代码 不能看到结果,请高手指正。 谢谢! |
|
| 第6楼 namejm | 发表于 2007-01-15 00:33 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
闰年的计算方法出错了,正确的算法是:能被4整除,但是不能被400整除的年份不是闰年。比如,2000年是闰年,但是1900年就不是闰年;
set dm%+=1 的写法是错误的,没有这样的变量引用方式,并且,做算术运算的时候要加上开关 /a ; 另外,1月份没必要和2月份放在一起处理,和3、5等大月放在一起更合理一些。 |
|
| 第7楼 lotus516 | 发表于 2007-01-15 00:45 |
| 高级用户 发帖 246 积分 551 | |
|
版主namejm收藏的!
后来搜了搜,这个代码是willsort的!!哈哈,原来代码第二行就写明了是willsort的!! 给两个链接http://www.cn-dos.net/forum/viewthread.php?tid=23926&fpage=1&highlight=%E7%BA%AF%E6%95%B0%E5%AD%97&page=1 http://www.cn-dos.net/forum/viewthread.php?tid=16676 [ Last edited by lotus516 on 2007-1-15 at 01:15 AM ] |
|
| 第8楼 tghksj | 发表于 2007-01-15 01:05 |
| 社区乞丐 发帖 90 积分 -49 | |
|
!!!!!!!!!!!!!!!!!!!!疑willsort为神!!!!!!!!!!!!!!!!!!!!!
看的我只想哭....5555555555555555555555 [ Last edited by tghksj on 2007-1-14 at 12:11 PM ] |
|
| 第9楼 scriptor | 发表于 2007-01-15 05:45 |
| 银牌会员 发帖 555 积分 1,187 | |
|
我又看法!
|
|
| 第10楼 scriptor | 发表于 2007-01-15 05:52 |
| 银牌会员 发帖 555 积分 1,187 | |
Originally posted by namejm at 2007-1-14 11:33: set ... 那里是粗心,谢谢了 但是一月和二月的问题是这样的 假设当前日期是一月,那么从一月到二月,是变化31天,而二月到三月十变化28天(平年); 假设当前日期是三月,那么从三月到四月十31天,好,程序没有逻辑错误; 但是从四月到五月,就是变化30天,那么,你说还能用 set 。。。+=28 吗? 所以,就不能把1月和3,5,7,8,10,12放在一起考虑 ! 同样的道理,2月和4,6,9,11也不能放在一起。 故此,就1,2月另外考虑,并不是因为把他们写在一起,就是说他们有什么问题! 不知道大家的意见如何 ? |
|
| 第11楼 scriptor | 发表于 2007-01-15 05:54 |
| 银牌会员 发帖 555 积分 1,187 | |
|
机器不允许把日期修改到1979年之前的!!
|
|
| 第12楼 scriptor | 发表于 2007-01-15 06:36 |
| 银牌会员 发帖 555 积分 1,187 | |
|
The latest code @echo off {::setlocal enabledelayedexpansion It is no need to add in! } set dy=%date:~0,4% set dm=%date:~5,2% set dd=%date:~8,2% echo Today is : %dy%-%dm%-%dd% echo 计算一百天后的日期. echo. pause>nul rem 先检查日期dd是否在以下条件(3-12),一二月份特殊考虑! rem 同时默认的是dy年份为平年,最后才考虑闰年. rem 所以只要在最后dd上加一就可以了! for %%i in (3,5,7,8,10,12) do ( rem Check Odd Month(单数月). if %dm% equ %%i ( set /a dm+=3 set /a dd+=8 rem 这时候,dm已经是双月份了. goto :checkdd ) ) rem Check Even Month(双数月). for %%j in (4,6,9,11) do ( if %dm% equ %%j ( set /a dm+=3 set /a dd+=9 rem 这时候,dm已经是单月份了. goto :checkdd ) ) ::jan and feb rem 考虑一月和二月的情况. if %dm% equ 1 ( set /a dm+=3 set /a dd+=10 goto :checkdd ) if %dm% equ 2 ( set /a dm+=3 set /a dd+=10 goto :checkdd ) :checkdd rem 这时候,dm已经是双月份了. rem Check Date is Great 30 or not. if %dd% gtr 30 ( rem 比如6月24日就要改成7月2日 set /a dm+=1 set /a ddd=%dd%-30 ) rem 这时,dm已经是单月份了. rem Check Date is Great 31 or not. if %dd% gtr 31 ( rem 比如7月24日就要改成8月2日. set /a dm+=1 set /a ddd=%dd%-31 ) :checkYear {Here, Be careful , the code is not the same with the former I writed!} rem 检查平年还是闰年,只要不是平年"... equ 0",就将dd再加一. set /a rmn=dy%4 set /a rmnn=dy%400 if %rmn% neq 0 (echo This year is not leap year!) if %rmn% equ 0 ( if %rmnn% equ 0 ( echo This year is leap year! set /a dd+=1 ) ) ::Output the Result. echo The day after 100 days is: %dy%-%dm%-%dd%! :: "Attach any code executable here!" pause>nul [ Last edited by scriptor on 2007-1-14 at 05:39 PM ] |
|
| 第13楼 xiaoqiangzx | 发表于 2007-01-16 09:47 |
| 初级用户 发帖 12 积分 34 | |
|
dos简单就好!!! 首先我非常敬佩大家的专业知识和学习热情~~
小弟我不才有句话想说 dos 不象 c++ 能否简单就好~~~ 别搞的很高深似的 要平民化!!!! 楼主的是:文件生成后100天自动删除指定文件,对不对? 比如:要del c盘的临时文件夹 只要建立个xxx.bat文件 内容: @echo off del /f /s /q %systemdrive%\*.tmp 然后把这个bat放在系统自带定时任务中设置为每100天运行一次即可以拉~~ .................... |
|
| 第14楼 xg19760104 | 发表于 2007-01-18 14:48 |
| 新手上路 发帖 2 积分 6 来自 广州市 | |
|
收到,非常有启发!谢谢 各位!
|
|
| 第15楼 timlee | 发表于 2007-01-20 11:55 |
| 新手上路 发帖 8 积分 16 | |
|
13楼的思路很有启发,能简单的何必搞得太复杂。
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |