找回密码
 加入
搜索
查看: 2459|回复: 8

[AU3基础] [已解决]请教如何如何比较二个文件的修改日期的相差数,并修改系统日期加上

  [复制链接]
发表于 2012-3-1 22:20:17 | 显示全部楼层 |阅读模式
本帖最后由 cjfcjf111 于 2012-3-9 23:20 编辑

请教如何如何比较二个文件的修改日期的相差数,并修改系统日期加上

比如,比较了二个文件的修改日期相差1天,或2天,则以当前日期为准调整系统日期加上1或2天

评分

参与人数 1金钱 +15 收起 理由
afan + 15 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2012-3-2 00:56:01 | 显示全部楼层
比较似乎不难,改不太容易
 楼主| 发表于 2012-3-2 17:20:02 | 显示全部楼层
本帖最后由 cjfcjf111 于 2012-3-2 17:22 编辑

会有这样的事,改个时间好象应该可以的吧.难不成AU3连改时间的功能都这么麻烦,比较我也知道,只是输出的格式如2012-2-20这样的格式,比如还有一个文件修改日期是2012-02-22,这二个日期相差2天,然后怎么才能用这样的格式加上相差的时间来修改系统日期
发表于 2012-3-3 01:24:16 | 显示全部楼层
您 说的  偶有点听不懂
多看看帮助吧   至少您先找到   两个码啊
获取文件  修改日期的码    有
修改文件  修改日期的码    有
对比的话   可能要把  数字提出来  才行
发表于 2012-3-3 03:06:26 | 显示全部楼层
FileGetTime 可以获取文件的各类日期
#Include <Date.au3>
_SetDate 可以设置系统日期
_SetTime 可以设置系统时间
不然, 楼主, 你想要什么?
难道你是火星来的,  好像我们都听不懂你说的?
 楼主| 发表于 2012-3-5 15:51:04 | 显示全部楼层

2

本帖最后由 cjfcjf111 于 2012-3-5 16:02 编辑

Local $t1 = FileGetTime(@WindowsDir & "\1.txt")

If Not @error Then
    Local $yyyymd1 = $t1[0] & "/" & $t1[1] & "/" & $t1[2]   ;获取了第1个文件的修改日期

Local $t2 = FileGetTime(@WindowsDir & "\2.txt")

If Not @error Then
    Local $yyyymd2 = $t2[0] & "/" & $t2[1] & "/" & $t2[2]   ;获取了第2个文件的修改日期

然后是如何获取2个文件的相差日期比如差了二天,而修改以当前系统日期为基准加上2天,比如2012/03/31 再加上相差的2天而变成2012/04/02呢

关键是如何加减,而加减所得的数值却要合乎年月日的格式,也就是当2月28日时后一天时有时会跳到3月1日,有时又是2月29日,以后的日期同理,而用_SetDate只能在上面的计算准确以后,才能用于修改,
发表于 2012-3-5 20:44:32 | 显示全部楼层
只写到取得新日期,修改文件日期楼主自己写吧
#include <Date.au3>

$File1 = FileGetTime(@DesktopDir & "\1.txt", 0);"2012/03/01"
$File2 = FileGetTime(@DesktopDir & "\2.txt", 0)

$DateCalc = _DateDiff("d", $File1[0] & "/" & $File1[1] & "/" & $File1[2], $File2[0] & "/" & $File2[1] & "/" & $File2[2])

If $DateCalc <> 0 Then
        $NewDate = _DateAdd("d", $DateCalc, _NowCalcDate())
        ;$sArray = StringSplit($NewDate, "/")                                                                                                                                        ;将新日期拆分成数组
        ;$NewFile1Date = $sArray[1] & $sArray[2] & $sArray[3] & $sArray[2] & $File1[3] & $File1[4] & $File1[5]        ;文件1叠加天数后的新修改时间
        ;$NewFile2Date = $sArray[1] & $sArray[2] & $sArray[3] & $sArray[2] & $File2[3] & $File2[4] & $File2[5]        ;文件2叠加天数后的新修改时间
        MsgBox(0, "误差天数:" & $DateCalc, "当前日期加上误差天数后的新日期:" & @CRLF & $NewDate)
Else
        MsgBox(0, "", "时间误差不足1天")
EndIf

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2012-3-5 20:50:34 | 显示全部楼层
_DateAdd($sType, $iValToAdd, $sDate)
 楼主| 发表于 2012-3-8 13:18:29 | 显示全部楼层
谢谢yhxhappy ,问题已解决,关键是拆分命令,将日期格式为2012/2/6这样的数字拆分后用 _SetDate进行调整,下面是我重新编过的内容

        $NewDate = _DateAdd("d", $DateCalc, _NowCalcDate())    ;计算新的日期并输出格式如2012/2/25状态
        $sArray = StringSplit(StringLeft($NewDate, 10), "/")   ;拆分新日期左起10个数字以/为单位分隔做为元素
        _SetDate($sArray[3], $sArray[2], $sArray[1])
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-30 19:25 , Processed in 0.090302 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表