netmaple 发表于 2019-8-25 14:19:17

求循环检测指定文件内数量并执行

本帖最后由 netmaple 于 2019-8-25 20:03 编辑

Local $size, $Time
$size = DirGetSize(@DesktopDir & "\if\BackUp", 1)
$Time = TimerInit()

While 1
      If FileExists($size) <> 0 Or TimerDiff($Time) >= 3000 * 60 Then
                MsgBox(0, '', '文件数量以够可以执行其他程序了')
                ExitLoop
      EndIf
      Sleep(1000)
      MsgBox(0, "文件数量不够继续等待", $size)
WEnd求大神看看这样个这样实现,检测特定文件夹内数量,超过指定个数就指定执行删除,同时添加个白名单。例如:浏览器.lnk qq.lnk xxx.lnk等 白名单不检测。
例如:开机3分钟内循环检测。发现图标超过10个就执行,不超过就等待出现,3分钟内没没出现就退出。

afan 发表于 2019-8-25 23:02:47

看你也是动手动脑一天了,没人帮我来
#include <File.au3>

Local $aFile, $nMax = 5        ;最大数量
Local $sWNList = '浏览器.lnk|qq.lnk|xxx.lnk'        ;白名单,|间隔

Local $nNow, $ExitFlag
Local $hTimer = TimerInit()
Local $sPath = @DesktopDir & '\if\BackUp'
Local $s_WNList = StringRegExpReplace($sWNList, '[.+\-(){}[\]^$]', '\\$0')
While 1
        $aFile = _FileListToArray($sPath)
        If Not @error Then
                If $aFile > $nMax Then
                        $nNow = 0
                        For $ii = 1 To $aFile
                                If Not StringRegExp($aFile[$ii], '(?:' & $s_WNList & ')') Then
                                        $nNow += 1
                                        If $nNow > $nMax Then
                                                $ExitFlag = 1
                                                MsgBox(64, '超出', '当前已超出,删除:' & $sPath & '\' & $aFile[$ii])
;~                                                 FileDelete($sPath & '\' & $aFile[$ii])        ;删除
                                        EndIf
                                EndIf
                        Next
                        If $ExitFlag Then
                                MsgBox(0, '', '删除完毕,退出')
                                ExitLoop
                        EndIf
                EndIf
        EndIf
        If TimerDiff($hTimer) >= 60000 * 3 Then
                MsgBox(0, '', '时间已到,退出')
                ExitLoop
        EndIf
        Sleep(1000)
WEnd
Exit

netmaple 发表于 2019-8-26 15:12:40

谢谢你确实弄了一天,10多小时间了没弄通也找不到相关的资料。感谢。

netmaple 发表于 2019-8-26 15:14:06

afan 发表于 2019-8-25 23:02
看你也是动手动脑一天了,没人帮我来

谢谢你确实弄了一天,10多小时间了没弄通也找不到相关的资料。感谢。

netmaple 发表于 2019-8-26 15:36:41

afan 发表于 2019-8-25 23:02
看你也是动手动脑一天了,没人帮我来

#include <File.au3>

Local $aFile, $nMax = 5      ;最大数量
Local $sWNList = '浏览器.lnk|qq.lnk|xxx.lnk'      ;白名单,|间隔

Local $nNow, $ExitFlag
Local $hTimer = TimerInit()
Local $sPath = @DesktopDir & '\if\BackUp'
Local $s_WNList = StringRegExpReplace($sWNList, '[.+\-(){}[\]^$]', '\\$0')
While 1
      $aFile = _FileListToArray($sPath)
      If Not @error Then
                If $aFile > $nMax Then
                        $nNow = 0
                        For $ii = 1 To $aFile
                              If Not StringRegExp($aFile[$ii], '(?:' & $s_WNList & ')') Then
                                        $nNow += 1
                                        If $nNow > $nMax Then
                                                $ExitFlag = 1
                                                MsgBox(64, '超出', '当前已超出,删除:' & $sPath & '\' & $aFile[$ii])
;~                                                 FileDelete($sPath & '\' & $aFile[$ii])      ;删除
                                        EndIf
                              EndIf
                        Next
                        If $ExitFlag Then
                              MsgBox(0, '', '删除完毕,退出')
                              ExitLoop
                        EndIf
                EndIf
      EndIf
      If TimerDiff($hTimer) >= 60000 * 3 Then
                MsgBox(0, '', '时间已到,退出')
                ExitLoop
      EndIf
      Sleep(1000)
WEnd
Exit

版主,这里的白名单跟检测数量可以转成ini配置文件么?

afan 发表于 2019-8-26 15:50:05

配置.ini 内容如下

[配置]
白名单=浏览器.lnk|qq.lnk|xxx.lnk
数量=5

au3文件修改相关变量
Local $nMax = IniRead('配置.ini', '配置', '数量', 5)      ;最大数量
Local $sWNList = IniRead('配置.ini', '配置', '白名单', '')       ;白名单,|间隔

都是最基础的东西,有问题看看帮助文档

netmaple 发表于 2019-8-26 19:35:51

好的谢谢您的帮助。
页: [1]
查看完整版本: 求循环检测指定文件内数量并执行