中国DOS联盟论坛

中国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:
  闰年的计算方法出错了,正确的算法是:能被4整除,但是不能被400整除的年份不是闰年。比如,2000年是闰年,但是1900年就不是闰年;

  set ...


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