自动根据当前日期生成昨日文件名的问题
程序A每次启动都自动根据当前日期在D盘下生成一个htm文件,比如:2008年11月3日生成的文件名是:_2008年11月02日_早班+晚班.htm(也就是说用的昨天的日期生成的文件名)现在每天启动的时候我想写个东西自动检测今天程序a有没有运行过,如果没运行过则执行程序a,如果运行过则执行别的程序
请高手说下如何检测这种文件名
[ 本帖最后由 a000000 于 2008-11-11 17:32 编辑 ] 如果对其它不影响的话,将系统时间调前一天,实现最快 同一天启动多此,生成的文件都一样吗? $Filename = "_"@YEAR &"年" &@MON &"月"& @MDAY-1 & "日"&"_早班+晚班.htm"
用这个格式应该可以得到上一天的文件名,然后判断文件是否存在。
但是我不知道如果你是11月01日的文件,然后DAY-1=0就会变成11月0日,哈哈,这样这个文件就一定不存在了,我也不知道怎么解决了。 这里有,看下吧
http://www.autoitx.com/forum.php?mod=viewthread&tid=3252
$DAY = @MDAY - 1
$MON = @MON + 0
$YEAR = @YEAR
If $DAY = 00 Then
$MON = @MON - 1
Switch $MON
Case 0
$YEAR = @YEAR - 1
$MON = 12
$DAY = 31
Case 1, 3, 5, 7, 8, 10
$DAY = 31
Case 2
$YEAR = @YEAR - 2E3
Do
$YEAR -= 4
If $YEAR = 0 Then $DAY = 29
If $YEAR < 0 Then $DAY = 28
Until $DAY = 0 Or $DAY < 0
Case 4, 6, 9, 11
$DAY = 30
EndSwitch
EndIf
If $DAY < 10 Then $DAY = '0' & $DAY
If $MON < 10 Then $MON = '0' & $MON
FileWrite('_'&$YEAR&'年'&$MON&'月'&$DAY&'日_早班+晚班.htm', 'TEST')
[ 本帖最后由 liongodmien 于 2008-11-10 20:54 编辑 ] 楼上的如果是2008年1月1日会怎样?
#include <Date.au3>
;makedir('2008-01-01')
makedir(_NowCalcDate())
Func makedir($date, $driver = "d:\");$date可以为yyyy/mm/dd,yyyy-mm-dd,yyyy.mm.dd
Local $d, $t, $dir
If Not _DateIsValid($date) Then ;检查日期格式是否有效
SetError(1)
Return
EndIf
$date=_DateAdd("d",-1,$date);取给定日期的前一天的日期
_DateTimeSplit($date, $d, $t)
$dir = StringFormat("_%04d年%02d月%02d日_早班+晚班.htm", $d, $d, $d)
FileWrite($driver & $dir, "")
EndFunc ;==>makedir 原帖由 pcbar 于 2008-11-10 20:25 发表 http://www.autoitx.com/images/common/back.gif
楼上的如果是2008年1月1日会怎样?
#include
;makedir('2008-01-01')
makedir(_NowCalcDate())
Func makedir($date, $driver = "d:\");$date可以为yyyy/mm/dd,yyyy-mm-dd,yyyy.mm.dd
Local $d, $t, $dir
...
原来写的时候把条件设错了,谢谢提醒,重新修改了,尽量做到适合LZ要求的条件,由于UDF部分的帮助基本上还没怎么看过,所以不会用日期的UDF,只有自己写了...
[ 本帖最后由 liongodmien 于 2008-11-10 21:42 编辑 ]
页:
[1]