netmaple 发表于 2019-8-28 10:31:33

求版主afan帮看一下循环检测中文件夹名称随机问题

本帖最后由 netmaple 于 2019-10-11 18:26 编辑

#include <File.au3>



Local $aFile, $nMax = IniRead(@WorkingDir & '\配置文件.ini', '配置', '数量', '')

Local $sWNList = IniRead(@WorkingDir & '\配置文件.ini', '配置', '白名单', '')

Local $nNow, $ExitFlag

Local $hTimer = TimerInit()

;~ Local $sPath = @DesktopDir & '\if\BackUp'

Local $sPath = IniRead(@WorkingDir & '\配置文件.ini', '配置', '路径', '')

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)

WEn

afan 发表于 2019-8-28 10:45:29

首先要确定$sPath 的真实路径

路径=C:\Users\ADMINI~1\AppData\Local\Temp    不要带后面的   n@
$aa = _FileListToArray (路径, 这里用 n@*)
$sPath = $aa

后面就接上面的


看我的签名,不要私信提问,你还发那么多,是不是因为私信不能贴图才发帖的? 私信提问一概不回!

netmaple 发表于 2019-8-28 12:20:38

没看懂啊这样执行不了
#include <File.au3>
Local $aFile, $nMax = IniRead(@WorkingDir & '\配置文件.ini', '配置', '数量', '')
Local $sWNList = IniRead(@WorkingDir & '\配置文件.ini', '配置', '白名单', '')
Local $nNow, $ExitFlag
Local $hTimer = TimerInit()


;~ Local $sPath = @DesktopDir & '\if\BackUp'
;~ Local $sPath = IniRead(@WorkingDir & '\配置文件.ini', '配置', '路径', '')

$aa = _FileListToArray(@TempDir & '\n@*');===============>>这样修改执行部了啊
$sPath = $aa

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

afan 发表于 2019-8-28 12:22:48

netmaple 发表于 2019-8-28 12:20
没看懂啊这样执行不了

看帮助文档 _FileListToArray() 一万遍!

chishingchan 发表于 2019-8-28 17:28:09

afan 发表于 2019-8-28 12:22
看帮助文档 _FileListToArray() 一万遍!

a 大的神功原来是这样练成的?!:face (1):

afan 发表于 2019-8-28 17:38:54

本帖最后由 afan 于 2019-8-28 19:26 编辑

chishingchan 发表于 2019-8-28 17:28
a 大的神功原来是这样练成的?!
唉恨铁不成钢


#include <File.au3>

Local $nMax = IniRead(@WorkingDir & '\配置文件.ini', '配置', '数量', '')
Local $sWNList = IniRead(@WorkingDir & '\配置文件.ini', '配置', '白名单', '')
Local $sPath = _FileListToArray(@TempDir, 'n@*')
If @error Then Exit MsgBox(48, '', '文件夹不存在,退出')
$sPath = @TempDir & '\' & $sPath

Local $s_WNList = StringRegExpReplace($sWNList, '[.+\-(){}[\]^$]', '\\$0')
Local $hTimer = TimerInit()
Local $aFile, $ExitFlag = 0
While 1
        $aFile = _FileListToArray($sPath)
        If _CkDir($aFile, $nMax) Then ExitLoop
        If TimerDiff($hTimer) >= 60000 * 0.5 Then
                MsgBox(0, '', '时间已到,退出')
                ExitLoop
        EndIf
        Sleep(1000)
WEnd
Exit

Func _CkDir($aFile, $nMax)
        If Not IsArray($aFile) Then Return 0
        If $aFile <= $nMax Then Return 0
        Local $nNow = 0
        For $ii = 1 To $aFile
                If StringRegExp($aFile[$ii], '(?:' & $s_WNList & ')') Then ContinueLoop
                $nNow += 1
                If $nNow > $nMax Then
                        $ExitFlag = 1
                        MsgBox(64, '超出', '当前已超出,删除:' & $sPath & '\' & $aFile[$ii])
;~                         FileDelete($sPath & '\' & $aFile[$ii])        ;删除
                EndIf
        Next
        If $ExitFlag Then
                MsgBox(0, '', '删除完毕,退出')
                Return 1
        EndIf
        Return 0
EndFunc   ;==>_CkDir

tarcy118 发表于 2019-8-29 01:24:56

不错支持一下

tarcy118 发表于 2019-9-6 00:08:37

不错支持一下
页: [1]
查看完整版本: 求版主afan帮看一下循环检测中文件夹名称随机问题