求版主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
首先要确定$sPath 的真实路径
路径=C:\Users\ADMINI~1\AppData\Local\Temp 不要带后面的 n@
$aa = _FileListToArray (路径, 这里用 n@*)
$sPath = $aa
后面就接上面的
看我的签名,不要私信提问,你还发那么多,是不是因为私信不能贴图才发帖的? 私信提问一概不回!
没看懂啊这样执行不了
#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 netmaple 发表于 2019-8-28 12:20
没看懂啊这样执行不了
看帮助文档 _FileListToArray() 一万遍! afan 发表于 2019-8-28 12:22
看帮助文档 _FileListToArray() 一万遍!
a 大的神功原来是这样练成的?!:face (1): 本帖最后由 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 不错支持一下 不错支持一下
页:
[1]